運行環境:windows,linux
python版本:2.x
中間有抄襲開源中國裏某大牛的代碼,望請原諒
- #!/usr/bin/python
- #coding:utf8
- import re,urllib
- #url='http://music.baidu.com'
- url='http://music.baidu.com/top/new' #百度新歌100榜
- openurl=urllib.URLopener()
- headers = ('User-Agent','Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1')
- openurl.addheaders = [headers] #瀏覽器仿真
- data=openurl.open(url).read() #獲取HTML代碼
- datadata=data.decode('utf8') #html轉換utf8編碼
- music_sid=re.findall(re.compile(r"'sid': '(.*)', 'sname'"),data) #正則匹配sid
- music_sname=re.findall(re.compile(r"'sname': '(.*)', 'author'"),data) #正則匹配歌曲名
- music_author=re.findall(re.compile(r"'author': '(.*)' }"),data) #正則匹配作者,或者演唱
- file=open('downurl.txt','w') #打開一個文本以寫模式打開
- for i in range(len(music_sid)): #循環一歌曲sid個數
- # file.write(sid[i]+name[i]+'\n')
- # print music_sid[i] + ' ' + music_sname[i] + '-' + music_author[i]
- print str(i) + ': '+ music_sname[i] + '-' + music_author[i] #序號加歌曲名
- da=openurl.open('http://music.baidu.com/song/%s/download'% str(music_sid[0])).read() #打開下載頁面
- downurl=re.findall(re.compile(r'downlink="/data/music/file\?link=(.*)" type'),da) #正則匹配下載地址
- file.write(downurl[0]+'\n') #下載地址寫到文本,這個可以註釋掉。
- print '%s music file download Ing ........................'%music_sname[i] #顯示內容
- urllib.urlretrieve(downurl[0],music_sname[i]+'-'+music_author[i]+'.mp3') #下載歌曲,命名
- print '-'*50
- file.close()