[转]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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值