现在的位置: 首页 > 综合 > 正文

[C#源代码]百度网盘地址批量转换工具

2013年10月15日 ⁄ 综合 ⁄ 共 2523字 ⁄ 字号 评论关闭

源代码地址 :         http://download.csdn.net/detail/witch_soya/5185926

效果如图

截止今日2013年3月27日10:13:48 还是可以使用的。但是不保证您在看到这篇文章的时候百度已经改变了文档结构。吼吼。那就不要在楼主的帖子底下NC的骂LZSB了,群众的眼睛是雪亮滴~~~

几个月前用爬虫将月之门游戏音乐在线试听的地址爬出来了,发现都存在于百度网盘中,详见 http://blog.csdn.net/witch_soya/article/details/8486213

     

         用了一些办法,没能将文件从百度网盘中批量提出来。后来又过了一段时间,看了一眼百度网盘网页代码,发现挺简单,是我想复杂了。于是写了这个百度网盘文件地址批量转换工具。也没什么牛逼的技术,发上来只希望能对有需要的人有一些帮助。

       百度网盘的地址是类似于这样的

   http://pan.baidu.com/share/link?shareid=112684&uk=455690558

          转换完毕得到的地址可以直接用迅雷去下载的是这样。

http://www.baidupcs.com/file/8d29f2f27f5939fabc7260e23f4739dd?fid=455690558-250528-2069072566&time=1364348891&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-QEMyAofAasbPaHUkB96JtiPppWQ%3D&expires=8h&sh=1&response-cache-control=private

        因为我只是为了下载月之门游戏音乐在百度网盘中的地址,所以没有试过其他的文件地址对不对。但是既然源码都放出来了。大家就自己调试一下了。

       流程起始很简单,就是模拟浏览器去访问百度盘的地址,然后提取其中的实际地址,核心函数就是这个

 

 //百度盘地址 http://pan.baidu.com/share/link?shareid=112694&uk=455690558 
        private string ConvertBaiduPan_Thunder(string strBaiduPan)
        {
            if (strBaiduPan == null)
            {
                return null;
            }

            string strThunder = null;
            //访问百度盘地址
            string strBaiduPanWebPage = MyHttp.GetHtml(strBaiduPan);
            if (strBaiduPanWebPage == "")
            {
                MessageBox.Show("访问地址失败!"+ strBaiduPan);
                goto End;
            }

            //取出  <a class="dbtn cancel b-fr" href="http://www.baidupcs.com/file/8d29f2f27f5939fabc7260e23f4739dd?fid=455690558-250528-2069072566&time=1358472203&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-E0ZjQ1awurzhDkjhV5c%2BtTN05nA%3D&expires=8h&sh=1&response-cache-control=private" id="downFileButtom"><b>下载(2.44M)</b></a>
            //匹配正则表达式  <a class="dbtn cancel b-fr" href="http://.*?">*.id="downFileButtom"><b>
            Regex r = new Regex("<a class=\"dbtn cancel b-fr\" href=\"http://.*?\">*.id=\"downFileButtom\"><b>");
            //开始匹配
            Match m = r.Match(strBaiduPanWebPage);
            string strLink = null;
            while (m.Success)
            {
                strLink = m.Groups[0].Value;

                //提取出其中href的值  http://www.baidupcs.com/file/8d29f2f27f5939fabc7260e23f4739dd?fid=455690558-250528-2069072566&time=1358470090&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-OiOC3pLc236790OikWTlSsTHWjc%3D&expires=8h&sh=1&response-cache-control=private" id="downFileButtom"
                Regex r2 = new Regex("http.*\"");
                //开始匹配
                Match m2 = r2.Match(strLink);
                while (m2.Success)
                {
                    strLink = m2.Groups[0].Value;

                    strLink = strLink.Replace("&", "&");
                    //    包含双引号 " id="downFileButtom"
                    strLink = strLink.Replace("\"","");
                    strLink = strLink.Replace("id=downFileButtom", "");
                    m2 = m2.NextMatch();
                }
                //从上一个匹配结束的位置开始下一个匹配
                m = m.NextMatch();

                strThunder = strLink;
            }                     
            
            End:
            return strThunder;
        }

        以上这个函数就是取出百度网盘中文件地址的函数了。很简单的网页抓取和文字匹配是吧。  如果有什么不明白的,自己看源码,或者给我留言。作为小白,乐意和众多菜鸟交流。

/*************************************/

witch_soya 2013年3月27日10:03:25

/*************************************/

抱歉!评论已关闭.