前一阵写了一个分析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'
©著作权归作者所有:来自51CTO博客作者redface999的原创作品,如需转载,请注明出处,否则将追究法律责任
共同学习,写下你的评论
评论加载中...
作者其他优质文章