好声音mp3下载,声音mp3下载,# !/usr/bin/
# !/usr/bin/python# -*- coding: UTF-8 -*-import reimport urllib2#charset 编码转换def mdcode( str, encoding='utf-8' ): if isinstance(str, unicode): return str.encode(encoding) for c in ('utf-8', 'gbk', 'gb2312','gb18030','utf-16'): try: if encoding == 'unicode': return str.decode(c) else: return str.decode(c).encode( encoding ) except: pass raise 'Unknown charset'#下载mp3文件,不支持断点续传def downmp3(url,name): res=urllib2.urlopen(url) open(mdcode(name,'gbk'),"wb").write(res.read())#请求html文件def gethtml(url): context = urllib2.urlopen(url).read() return mdcode(context)#通过正则,提取MP3的下载地址,以及mp3的演唱者def feedmp3url(data): mp3url = re.findall(r'''<input(\\s*)(.*?)(\\s*)downlink(\\s*)=(\\s*)([\\"\\s]*)([^\\"\\']+?)([\\"\\s]+)(.*?)id=\\"bit128\\"(.*?)>''' ,data,re.S|re.I) #print result author = re.findall(r'''<span class=\\"author_list\\" title(\\s*)=(\\s*)([\\"\\s]*)([^\\"\\']+?)([\\"\\s]+)(\\s*)>''',data,re.S|re.I) return mp3url[0][6], author[0][3]#通过正则,提取每期的MP3列表 def feedurllist(data): urls = [] url = re.findall(r'''<a(\\s*)(.*?)(\\s*)href(\\s*)=(\\s*)([\\"\\s]*)([^\\"\\']+?)([\\"\\s]+)(\\s*)title(\\s*)=(\\s*)([\\"\\s]*)([^\\"\\']+?)([\\"\\s]+)(\\s*)>''' ,data,re.S|re.I) #print url for u in url: #print u[6],u[12] mp3url, author=feedmp3url(gethtml('http://ting.baidu.com'+u[6]+'/download')) urls.append([mp3url, u[12], author]) print mdcode(u[12]+'-'+author,'gbk') return urls#主函数,传入好声音各期的页面urldef main(urls): url = [] for u in urls: url += feedurllist(gethtml(u)) return urlif __name__ == '__main__': #context = urllib2.urlopen('http://ting.baidu.com/album/23149328').read() #print context all = ['http://ting.baidu.com/album/23149328', 'http://ting.baidu.com/album/23150394', 'http://ting.baidu.com/album/23150523', 'http://ting.baidu.com/album/23152500', 'http://ting.baidu.com/album/23152435', 'http://ting.baidu.com/album/23151786', 'http://ting.baidu.com/album/23160050', 'http://ting.baidu.com/album/23364352', 'http://ting.baidu.com/album/23528761', 'http://ting.baidu.com/album/24493381' ] #urls = feedurllist(gethtml('http://ting.baidu.com/album/23149328')) mp3=feedmp3url(gethtml('http://ting.baidu.com'+'/song/23528758'+'/download')) urls = main(all) print "Start down mp3 ..." for url in urls: mp3name=mdcode(url[1]+'-'+url[2]+'.mp3','gbk') print mp3name,"Down ..." downmp3("http://ting.baidu.com"+url[0],mp3name)#该片段来自于http://byrx.net
评论关闭