[转]Python下载百度新歌100的代码

本文介绍了一个使用Python编写的脚本,该脚本可以从百度音乐网站抓取并下载MP3链接。通过解析网页内容,脚本能够获取到歌曲的详细信息,并实现自动化下载功能。

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

None.gif#!/usr/bin/python 
None.gif#
 -*- coding: utf-8 -*- 
None.gif#
 Copyright (c) 2006 UbuntuChina <http://www.ubuntu.org.cn> 
None.gif#
 License: GPLv2 
None.gif#
 Author: oneleaf <oneleaf AT gmail.com> 
None.gif

None.gif
import httplib 
None.gif
import re 
None.gif
import urllib 
None.gif
import os 
None.gif
import locale 
None.gif
None.gif
def getdownurl(url): 
None.gif    urllist
=[] 
None.gif    conn 
= httplib.HTTPConnection('mp3.baidu.com'
None.gif    conn.request(
"GET",url) 
None.gif    response 
= conn.getresponse() 
None.gif    html
=response.read() 
None.gif    conn.close() 
None.gif    expression
='http://220.181.27.54/m(.*)</a>' 
None.gif    listSentence 
= re.findall(expression, html) 
None.gif    lineno
=
None.gif    
while lineno<len(listSentence): 
None.gif        mp3url
=re.search('title=(.*)onclick',listSentence[lineno]) 
None.gif        
if mp3url: 
None.gif           mp3url
=mp3url.group(0) 
None.gif           mp3url
=re.search('http(\S*)',mp3url) 
None.gif           
if mp3url: 
None.gif              mp3url
=mp3url.group(0) 
None.gif              
try
None.gif                  mp3url
=mp3url.decode('gbk'
None.gif              
except:pass 
None.gif              urllist.append(mp3url) 
None.gif        lineno
+=2 
None.gif    
return urllist 
None.gif
None.gif
def downmp3(url,author,name,filelist): 
None.gif    filename
=author+"-"+name; 
None.gif    
for i in filelist: 
None.gif        name
=unicode(i,locale.getpreferredencoding()) 
None.gif        
if name.find(filename) == 0: 
None.gif            
print u"文件已经下载,忽略。" 
None.gif            
return 1 
None.gif    urllists
=getdownurl(url) 
None.gif    
for i in urllists:        
None.gif        
print u"正在连接",i 
None.gif        
None.gif        ext
=i[-4:] 
None.gif        
try
None.gif            urlopen 
= urllib.URLopener() 
None.gif            fp
=urlopen.open(i) 
None.gif            data 
= fp.read() 
None.gif            fp.close() 
None.gif            filename
=filename+ext; 
None.gif            file
=open(filename,'w+b'
None.gif            file.write(data) 
None.gif            file.close() 
None.gif            
print u"下载成功!" 
None.gif            
return 1 
None.gif        
except
None.gif            
continue 
None.gif    
return 0 
None.gif
None.gif
if __name__ == "__main__"
None.gif    conn 
= httplib.HTTPConnection('list.mp3.baidu.com'
None.gif    conn.request(
"GET",'/list/newhits.html?id=1'
None.gif    response 
= conn.getresponse() 
None.gif    html
=response.read().decode('gbk'
None.gif    conn.close() 
None.gif    expression
='<a href="http://mp3.baidu.com/m(.*)</a>' 
None.gif    listSentence 
= re.findall(expression, html) 
None.gif    lineno
=
None.gif    
while lineno<len(listSentence): 
None.gif       url
=re.search('(.*)target',listSentence[lineno]) 
None.gif       url
='/m'+url.group(0)[:-8
None.gif       name
=re.search('blank>(.*)',listSentence[lineno]) 
None.gif       name
=name.group(0)[6:] 
None.gif       author
=re.search('blank>(.*)',listSentence[lineno+1]) 
None.gif       author
=author.group(0)[6:] 
None.gif       
print u"开始下载",author,name 
None.gif       filelist
=os.listdir('.'); 
None.gif       
if downmp3(url,author,name,filelist)==0: 
None.gif          
print u"下载",author,name,u'失败!' 
None.gif       lineno
+=2 
None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值