[轉]Python下載百度新歌100的代碼

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
發佈了7 篇原創文章 · 獲贊 0 · 訪問量 3005
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章