python 分析Google音樂下載地址(二)

       前一陣寫了一個分析Google音樂下載地址的文章( http://dashen2009.blog.51cto.com/714741/199981)只是分析出來下載頁面的地址,可是經過那個地址下載頁面出了問題,Google彷佛在中間加了一個跳轉頁面,跳轉頁面經過Javascript跳到真正的下載頁面,我用urllib只能下載到跳轉頁,沒有找到下載頁面的方法(若是哪位朋友知道方法請轉告我一下,謝謝mail:mistral1986@gmail.com)今天在網偶然搜到一個帖子( http://forum.ubuntu.com.cn/viewtopic.php?f=73&t=194453&sid=6114953a98d40931c2fd74ffbc474d6a),用別的方法解決了這個問題。呵呵!原來Google音樂的下載頁面是「http://www.google.cn/music/top100/musicdownload?id=」根本不用分析頁面中的那個址( http://g.top100.cn/12174704/html/download.html?id=S3977fd7a5b3df7bc),只分析出來id就好了,用這個新地址下載頁面就正確了,而後再分析出文件的下載地址便OK了。不過別高興得這麼早,新的問題又產生了,Google早就防着別人自動下它的音樂了,當你下載到必定到數量的時候(聽別人說是100次),它便提示你輸入驗證碼。我再從網上找找看有沒有破解驗證碼的文章,先把寫好的代碼貼出來吧,代碼仍是有一點問題的,有時分析出的音樂下載數量少一些,好比一共有25首歌,老是比這個少,也沒找到緣由。之後再找找看看。把songlist.txt導入到迅雷下載就好了,我試了試,下載的時候有一些歌下不了。之後我再優化一下。
# coding=utf-8    
import urllib,re,sys,time


url='http: //www.google.cn/music/topiclisting?q=top100_duet_love_songs&cat=song'
prefix='http: //www.google.cn/music/top100/musicdownload?id='
downname='songlist.txt'
html=urllib.urlopen(url).read()

regx='下載.*window.*http.*\\\\x26resnum'            #\x26resnum很奇怪,明明看到的是一個‘\’但是匹配不出來,好像是有兩個‘\\’    
reobj=re.compile(regx)    
reg='http.*mp3'     #文件下載地址
rej=re.compile(reg)    
list=[]

for match in reobj.finditer(html):
        list.append(match.group())
        
id=[]

for l in list:
        id.append(prefix+urllib.unquote(l[-27:-10]))
        
down=[]

for i     in id:
        html=urllib.urlopen(i).read()
        time.sleep(1)
         for match in rej.finditer(html):
                down.append(urllib.unquote(urllib.unquote(match.group())))

                
if len(down) >0:
        file=open(downname,'w')
         for d in down:
                file.write(d+'\n')
        file.close()

print 'finish'    
        
相關文章
相關標籤/搜索