运行环境:windows,linux

python版本:2.x

中间有抄袭开源中国里某大牛的代码,望请原谅

 

 
  
  1. #!/usr/bin/python  
  2. #coding:utf8  
  3.  
  4. import re,urllib  
  5.  
  6. #url='http://music.baidu.com' 
  7. url='http://music.baidu.com/top/new' #百度新歌100榜
  8. openurl=urllib.URLopener()  
  9. headers = ('User-Agent','Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1')  
  10. openurl.addheaders = [headers]   #浏览器仿真
  11. data=openurl.open(url).read()   #获取HTML代码
  12. datadata=data.decode('utf8')   #html转换utf8编码
  13. music_sid=re.findall(re.compile(r"'sid': '(.*)', 'sname'"),data) #正则匹配sid 
  14. music_sname=re.findall(re.compile(r"'sname': '(.*)', 'author'"),data)  #正则匹配歌曲名
  15. music_author=re.findall(re.compile(r"'author': '(.*)' }"),data)   #正则匹配作者,或者演唱
  16.  
  17. file=open('downurl.txt','w')   #打开一个文本以写模式打开
  18. for  i in range(len(music_sid)):   #循环一歌曲sid个数
  19. #   file.write(sid[i]+name[i]+'\n')  
  20. #   print  music_sid[i] + '  ' + music_sname[i] + '-' + music_author[i]  
  21.     print str(i) + ':            '+ music_sname[i] + '-' + music_author[i]   #序号加歌曲名
  22.     da=openurl.open('http://music.baidu.com/song/%s/download'% str(music_sid[0])).read() #打开下载页面  
  23.     downurl=re.findall(re.compile(r'downlink="/data/music/file\?link=(.*)" type'),da)  #正则匹配下载地址
  24.     file.write(downurl[0]+'\n')   #下载地址写到文本,这个可以注释掉。
  25.     print '%s music file download Ing ........................'%music_sname[i]   #显示内容
  26.     urllib.urlretrieve(downurl[0],music_sname[i]+'-'+music_author[i]+'.mp3')   #下载歌曲,命名
  27.     print '-'*50  
  28. file.close()