这篇文章主要给大家介绍了利用#wiki/1514.html” target=”_blank”>python爬取qq music中的音乐url及实现批量下载的相关资料,文中给出了详细的介绍和示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
前言
qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的。于是,来了个qqmusic的爬虫。至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧。下面开始找吧(讲的不对不要笑我)
实现如下
#寻找url:
这个url可不想其他的网站那么好找。把我给累得不轻,关键是数据多,从那么多数据里面挑出有用的数据,最后组合为music真正的music。昨天做的时候整理的几个中间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&c雨蝶’
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 in jm1:
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 in range(0,len(mids)):
res2 = requests.get(‘https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpcallback=musicjsoncallback&c+songmids[n]+’&filename=c400’+mids[n]+’.m4a&gu)
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+’&gu)
#下载:
有了srcs,下载自然不成问题。当然获取歌手以及歌名也是可以把src复制到浏览器下载。也可以用大python批量下载,无非就是一个循环,跟我们前面下载sogou图片方法类似:(笔者py版本:python3.3.3)
print(‘for ‘+word+’ start download…’)
x = len(srcs)
for m in range(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
#运行效果:
music已经成功下载。。。
至此,关于qqmusic的url爬虫程序思路及实现叙述完毕。
#用途:
musicplayer做好壳子的同学,应该用得上吧。其实做这个初衷是要为我的基于html的musicplayer服务的。但现在卡在了js调用py的环节,我再找找吧,明白的同学望告知,万分感谢!
以上就是python爬取qq music中的音乐url及批量下载的方法的详细内容,更多请关注 第一php社区 其它相关文章!