python 分析Google音乐下载地

发布时间:2019-09-16 07:34:33编辑:auto阅读(1813)

           前一阵写了一个分析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'    
            

关键字