使用.net里的WebClient自动下载baidu的mp3

本文介绍了一个简单的程序,用于从百度音乐榜单批量下载MP3文件。该程序利用WebClient组件和正则表达式来解析网页内容并抓取音乐链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现blog是很费资源的东西,也是一个督促自己学习的东西。今天想写又不知道写什么好,另外自己研究的一些代码也没完成,所以还真不知道写什么好。想起昨天自己还使用的baidump3下载程序,就放出来给大家吧,我没经过优化,也没用多线程下载,更没判断文件大小,就是把baidu top500一口气下载下来,下完在听好不好听,不好听就删除。

基本上就使用了webclient + 正则  ,比较简单,具体大家可以看看,然后自己修改了。运行的话,需要一个RichTextBox 控件和按钮,大家自己拉咯。d:/new目录自己建吧,程序没判断,毕竟就自己用的一个小工具,没那么多讲究了,有服务器的还是运行到服务器吧,比较快。原来测试过10M的带宽,3-4个小时可以把500首歌拉完。

代码如下

 

WebClient webdown = new WebClient();
            
string url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2";


            
string tmp = webdown.DownloadString(url);
            
// RTBInfo.Text = tmp;

            
string scanStr = @"(?<urlstr>http://mp3.baidu.com/m[?]tn=baidump3&ct=(d+)(S+))(s*)(S+)>(?<songName>S+)<";//&(W<urlstr>+) target=_blank>(W<songName>+)</a>";
            Regex regScan = new Regex(scanStr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
            MatchCollection matchCol_F 
= regScan.Matches(tmp);
            MatchCollection matchCol;
            MatchCollection matchCol_S;
           
            
foreach (Match mat in matchCol_F)
            
{

                
string songName = mat.Groups["songName"].ToString();
                
string songUrl = mat.Groups["urlstr"].ToString();
                songUrl 
= songUrl.Remove(songUrl.Length - 11);

                
if (songName == ")")
                
{
                    
continue;
                }

                
                RTBInfo.AppendText(
"下载歌曲:" + songName + " ");

                
try
                
{
                    tmp 
= webdown.DownloadString(songUrl);
                }

                
catch
                
{
                    
continue;
                }

          
//  http://220.181.38.82/m?ct=134217728&tn=baidusg,牛仔很忙  &word=mp3,http://jayhome.pengpeng.com/down/mp3/Y2Jja6OfrLKSm6Wpo5WBmap6oqGaZHqmMQ$$.mp3,,[%C5%A3%D7%D0%BA%DC%C3%A6+%D6%DC%BD%DC%C2%D7]&si=%C5%A3%D7%D0%BA%DC%C3%A6;;%D6%DC%BD%DC%C2%D7;;218633;;218633&lm=16777216
                scanStr = @"(?<urlstr>http://(S+)(d+)(D+)" + songName + @"(s*)(D+)mp3(S+)&lm=(d+))";
                regScan 
= new Regex(scanStr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
                matchCol 
= regScan.Matches(tmp);
                
if (matchCol.Count > 0)
                    songUrl 
= matchCol[0].Groups["urlstr"].ToString();
                
else
                    
continue;

                
//RTBInfo.AppendText("下载地址2:" + songUrl + " ");
                try
                
{
                    tmp 
= webdown.DownloadString(songUrl);
                }

                
catch
                
{
                    
continue;
                }

                scanStr 
= @"(?<urlstr>http://(S+)mp3)";
                regScan 
= new Regex(scanStr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
                matchCol_S 
= regScan.Matches(tmp);

                
foreach (Match mat_S in matchCol_S)
                
{
                    songUrl 
= mat_S.Groups["urlstr"].ToString();


                    
// RTBInfo.AppendText("下载地址3:" + songUrl + " ");
                    RTBInfo.AppendText("下载中....");
                    
try
                    
{
                         
if (File.Exists("d:/new/" + songName + ".mp3")) break;
                        webdown.DownloadFile(songUrl, 
"d:/new/" + songName + ".mp3");
                    }

                    
catch(Exception ex)
                    
{
                        RTBInfo.AppendText(
"下载失败 ");
                        
continue;
                    }

                    RTBInfo.AppendText(
"下载成功 ");
                    
break;
                }

            }

            RTBInfo.AppendText(
"下载结束 ");
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值