Python爬取qq music中的音乐url及批量下载


Posted in Python onMarch 23, 2017

前言

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&cid=205361747&[songmid]&C400+songmid+.m4a&guid=6612300644

#url3:http://dl.stream.qqmusic.qq.com/[filename]?vkey=[vkey](其中vkey代替该music特有的字符串)

requests(url1)

由搜索列表得到每个音乐的的songmid和mid(通过笔者观察,这两个值是每一个music特有的)。有了这两个值。下面就得到了完整的url2的具体值。

requests(url2)

得到搜索结果中每个music的vkey值,经过笔者观察,filename即为C400songmid.m4a。进而确定了url3的具体值。而url3即为音乐的真实url,由于笔者对此url的其他参数研究的不够透彻,因此每次最多返回20首music的url,有了url,那Tencent的music就可以尽情的享受了。

#代码

下面来个srcs的代码块:

import requests
import urllib
import json
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 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&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')

#下载:

有了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

#运行效果:

Python爬取qq music中的音乐url及批量下载 

下载开始,下面...到下载目录看看:

Python爬取qq music中的音乐url及批量下载

music已经成功下载。。。

至此,关于qqmusic的url爬虫程序思路及实现叙述完毕。

#用途:

musicplayer做好壳子的同学,应该用得上吧。其实做这个初衷是要为我的基于html的musicplayer服务的。但现在卡在了js调用py的环节,我再找找吧,明白的同学望告知,万分感谢!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python Pandas 读取txt表格的实例
Apr 29 Python
python SMTP实现发送带附件电子邮件
May 22 Python
python3 读取Excel表格中的数据
Oct 16 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python3压缩和解压缩实现代码
Mar 01 Python
Python爬取网页中的图片(搜狗图片)详解
Mar 23 #Python
Python编程之event对象的用法实例分析
Mar 23 #Python
Python中.py文件打包成exe可执行文件详解
Mar 22 #Python
python3中dict(字典)的使用方法示例
Mar 22 #Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 #Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 #Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 #Python
You might like
谈谈PHP语法(3)
2006/10/09 PHP
php 文件状态缓存带来的问题
2008/12/14 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
JS分页效果示例
2013/10/11 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
python字典基本操作实例分析
2015/07/11 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
对python中Json与object转化的方法详解
2018/12/31 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
人力资源行政经理自我评价
2013/10/23 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
机械个人求职信范文
2014/01/24 职场文书
法学院毕业生求职信
2014/06/25 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
司机岗位职责范本
2015/04/10 职场文书
贫困证明怎么写
2015/06/16 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS