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'    
        
相关文章
相关标签/搜索