python爬qq音乐流程

python爬qq音乐流程

一首歌的下载源,有两个变量与该歌曲相关联。

http://isure.stream.qqmusic.qq.com/C4000027gx754P2jdk.m4a?
guid=358840384&vkey=E0605424CD72116F98EF3CF016C67AE1025D178B0182E5470167B9946283380B1616FDF19BE4641110440529EC891711D1B99FBAA93A0AD5&uin=0&fromtag=66
为filename和vkey。

引进以下三个库

import urllib.request as urlReq
import urllib.parse as par
import json

  1. 根据关键字获取songmid:
    https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=1&w=Genius&format=json
    #其中n为请求数量,W为是所搜的关键字
    

用urlReq.urlopen()访问该链接,获取json 格式str类型文本,用json.loads()转化为字典。文本中一首歌信息如下:

{‘code’: 0, ‘data’: {‘keyword’: ‘Genius’, ‘priority’: 0, ‘qc’: [], ‘semantic’: {‘curnum’: 0, ‘curpage’: 1, ‘list’: [], ‘totalnum’: 0}, ‘song’: {‘curnum’: 1, ‘curpage’: 1, ‘list’: [{‘albumid’: 4036395, 'albummid’: ‘000gbXUP09GMbU’, ‘albumname’: ‘Genius’, ‘albumname_hilight’: ‘Genius’, ‘alertid’: 23, ‘belongCD’: 0, ‘cdIdx’: 1, ‘chinesesinger’: 0, ‘docid’: ‘14092544193640800540’, ‘grp’: [], ‘interval’: 213, ‘isonly’: 1, ‘lyric’: ‘’, ‘lyric_hilight’: ‘’, ‘media_mid’: ‘0027gx754P2jdk’, ‘msgid’: 16, ‘newStatus’: 2, ‘nt’: 1899243675, ‘pay’: {‘payalbum’: 0, ‘payalbumprice’: 0, ‘paydownload’: 1, ‘payinfo’: 1, ‘payplay’: 0, ‘paytrackmouth’: 1, ‘paytrackprice’: 200}, ‘preview’: {‘trybegin’: 25901, ‘tryend’: 76419, ‘trysize’: 0}, ‘pubtime’: 1525276800, ‘pure’: 5, 'singer’: [{‘id’: 2147430, ‘mid’: ‘003ubAPl4QFU7J’, ‘name’: ‘LSD’, ‘name_hilight’: ‘LSD’}, {‘id’: 7015, ‘mid’: ‘004ItgA32BhfdC’, ‘name’: ‘Sia’, ‘name_hilight’: ‘Sia’}, {‘id’: 45986, ‘mid’: ‘002fNsK82AEbQZ’, ‘name’: ‘Diplo’, ‘name_hilight’: ‘Diplo’}, {‘id’: 22591, ‘mid’: ‘001XLFlR0LH6qO’, ‘name’: ‘Labrinth’, ‘name_hilight’: ‘Labrinth’}], ‘size128’: 3409917, ‘size320’: 8524483, ‘sizeape’: 0, ‘sizeflac’: 0, ‘sizeogg’: 5180802, ‘songid’: 213870506, ‘songmid’: ‘001Hb8ZS3w1N6M’, ‘songname’: ‘Genius’, ‘songname_hilight’: ‘Genius’, ‘strMediaMid’: ‘0027gx754P2jdk’, ‘stream’: 1, ‘switch’: 636675, ‘t’: 1, ‘tag’: 10, ‘type’: 0, ‘ver’: 0, ‘vid’: ‘a0026tc55jp’}], ‘totalnum’: 600}, ‘tab’: 0, ‘taglist’: [], ‘totaltime’: 0, ‘zhida’: {‘chinesesinger’: 0, ‘type’: 0}}, ‘message’: ‘’, ‘notice’: ‘’, ‘subcode’: 0, ‘time’: 1586501015, ‘tips’: ‘’}
提取出需要的歌手信息,songmid,歌名。
​ 注意歌手是一个列表。

  1. 根据songmid获取vkey,filename等:

https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid=songmid&filename=C400songmid.m4a&guid=6612300644

粗体为第一步获得变量。例:songmid=001Hb8ZS3w1N6M&filename=C400001Hb8ZS3w1N6M.m4a 代入上述链接。

用urlReq.urlopen(),获得的json 格式str类型文本也需要用json.loads()转化为字典,或者用正则表达式提取。如下:

{“code”:0,“ts”:1586501035364,“start_ts”:1586501035360,“req_0”:{“code”:0,“data”:{ “expiration”: 80400, “login_key”: “”, “midurlinfo”: [ { “common_downfromtag”: 0, “errtype”: “”, “filename”: “C4000027gx754P2jdk.m4a”, “flowfromtag”: “”, “flowurl”: “”, “hisbuy”: 0, “hisdown”: 0, “isbuy”: 0, “isonly”: 0, “onecan”: 0, “opi128kurl”: “”, “opi192koggurl”: “”, “opi192kurl”: “”, “opi30surl”: “”, “opi48kurl”: “”, “opi96kurl”: “”, “opiflackurl”: “”, “p2pfromtag”: 0, “pdl”: 0, “pneed”: 0, “pneedbuy”: 0, “premain”: 0, “purl”: “C4000027gx754P2jdk.m4a?guid=358840384&vkey=E0605424CD72116F98EF3CF016C67AE1025D178B0182E5470167B9946283380B1616FDF19BE4641110440529EC891711D1B99FBAA93A0AD5&uin=0&fromtag=66”, “qmdlfromtag”: 0, “result”: 0, “songmid”: “001Hb8ZS3w1N6M”, “tips”: “”, “uiAlert”: 0, “vip_downfromtag”: 0, “vkey”: “E0605424CD72116F98EF3CF016C67AE1025D178B0182E5470167B9946283380B1616FDF19BE4641110440529EC891711D1B99FBAA93A0AD5”, “wififromtag”: “”, “wifiurl”: “” } ], “msg”: “163.204.177.162”, “retcode”: 0, “servercheck”: “0502f67d8cf451662c4b46417d571295”, “sip”: [ “http://ws.stream.qqmusic.qq.com/”, “http://isure.stream.qqmusic.qq.com/” ], “testfile2g”: “C400003mAan70zUy5O.m4a?guid=358840384&vkey=F90205DC958D81148378E3C4C2AFAE7D43D465FE268758FE9F1133F1EDDE748D670766D16BD02EC514B9F2FCD48978D02C6F72D879174DF3&uin=&fromtag=3”, “testfilewifi”: “C400003mAan70zUy5O.m4a?guid=358840384&vkey=F90205DC958D81148378E3C4C2AFAE7D43D465FE268758FE9F1133F1EDDE748D670766D16BD02EC514B9F2FCD48978D02C6F72D879174DF3&uin=&fromtag=3”, “thirdip”: [ “”, “” ], “uin”: “”, “verify_type”: 0 }}}

有的歌曲获得 vkey和 purl 为空,所以无法下载。(需vip的大概都是如此)

sip[0]+purl可构成一个下载链接了

  1. 根据含vkey链接下载

用urlReq.urlretrieve(path,sip[0]+purl

path为保存音乐文件路径,应给定已存在文件夹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值