python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载

QQ音乐还是有不少的好音乐,有些时候想要下载好听的音乐,如果在网页下载都是还需要登录什么的。于是,来了个QQmusic的爬虫。至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧。
参考几个中间url:
#url1:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w=雨蝶
#url2:https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&[songmid]&C400+songmid+.m4a&guid=6612300644
#vkey代替该music特有的字符串#url3:http://dl.stream.qqmusic.qq.com/[filename]?vkey=[vkey]
requests(url1):由搜索列表得到每个音乐的的songmid和mid(通过笔者观察,这两个值是每一个music特有的)。有了这两个值。下面就得到了完整的url2的具体值。
requests(url2):得到搜索结果中每个music的vkey值,经过笔者观察,filename即为C400songmid.m4a。进而确定了url3的具体值。而url3即为音乐的真实url,每次最多返回20首music的url,有了url,那Tencent的music就可以尽情的享受了。
下面代码是参考的网上的代码:
importrequestsimporturllibimportjson
word= '雨蝶'res1= requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w='+word)
jm1= json.loads(res1.text.strip('callback()[]'))
jm1= jm1['data']['song']['list']
mids=[]
songmids=[]
srcs=[]
songnames=[]
singers=[]for j injm1:try:
mids.append(j['media_mid'])
songmids.append(j['songmid'])
songnames.append(j['songname'])
singers.append(j['singer'][0]['name'])except:print('wrong')for n inrange(0,len(mids)):
res2= requests.get('https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid='+songmids[n]+'&filename=C400'+mids[n]+'.m4a&guid=6612300644')
jm2=json.loads(res2.text)
vkey= jm2['data']['items'][0]['vkey']
srcs.append('http://dl.stream.qqmusic.qq.com/C400'+mids[n]+'.m4a?vkey='+vkey+'&guid=6612300644&uin=0&fromtag=66')
有了上面的这段代码,下载自然不成问题。当然获取歌手以及歌名也是可以把src复制到浏览器下载。也可以用大Python批量下载,无非就是一个循环,跟我们前面下载sogou图片方法类似:
print('For'+word+'Start download...')
x=len(srcs)for m inrange(0,x):print(str(m)+'*****'+songnames[m]+'-'+singers[m]+'.m4a *****'+'Downloading...')try:
urllib.request.urlretrieve(srcs[m],'d:/music/'+songnames[m]+'-'+singers[m]+'.m4a')except:
x= x - 1
print('Download wrong~')print('For ['+word+'] Download complete'+str(x)+'files !')
以上两段代码,写在同一py文件,运行即可下载对应关键词的music
运行代码,开始下载:
python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载
文章图片

查看下载目录:
python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载
文章图片

【python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载】我们看到music已经成功下载,这就是Python爬取QQ音乐url及批量下载的简单实现思路。

    推荐阅读