Python采集VIP收费QQ音乐,一起来听周董最新的《说好不哭》,省3块不香吗?
环境:
windows
python3.6.5
模块:
requests
selenium
json
re
urllib
环境与模块介绍完毕后,就可以来实行我们的操作了。
第1步:
通过一个解析网站:http://www.douqq.com/qqmusic/
我们可以发现,只需要在这里填写QQ音乐的地址,即可获取我们想要的音乐源文件。
第二步:
获取到QQ音乐的地址,打开我们的QQ音乐首页https://y.qq.com/
通过源文件,我们可以发现里面并没有我们想要的数据:
那么,我们再来抓包分析:
发现确实有我们想要的数据,但是当我们看到 headers报文当中的 url时,发现都是加密过后的数据!
所以涉及到了JS加密,那么 会有很多人感觉到很难,所以我们可以选择另外一个python模块selenium,直接获取我们的element 元素:
源代码为:
url=f'https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w={name}' driver.get(url) driver.implicitly_wait(10) data=driver.find_element_by_xpath('//div[@class="songlist__item"]//span[@class="songlist__songname_txt"]/a').get_attribute('href')
这里的url是通过简单分析得到的结论,只需要修改w参数即可得到不同的音乐。
第三步
把我们渠道的data链接利用到我们的解析网站:http://www.douqq.com/qqmusic/
抓包分析:
可以发现这个是一个post请求,然后我们的表单提交的数据,就是我们的QQ音乐地址!
第四步:
模拟访问这个post请求,拿到我们的返回数据:
headers = { 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', ', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Host': 'www.douqq.com', 'Origin': 'http://www.douqq.com', 'Referer': 'http://www.douqq.com/qqmusic/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', } data = {'mid': '前面取到的音乐地址'} url = 'http://www.douqq.com/qqmusic/qqapi.php' req = requests.post(url, data=data, headers=headers).text
它的返回值:
可以发现MV对应的链接有偏差,不是一个规则的URL,所以在此可以进行数据精炼,得到最终音乐链接:
req = json.loads(req) req = req.replace('\/\/', '//').replace('\/', '/') rg = re.compile('"mp3_l":"(.*?)",') rs = re.findall(rg, req)[0]
第五步:
下载音乐:
urlretrieve(rs, name+'.mp3')
效果:
Python采集VIP收费QQ音乐,一起来听周董最新的《说好不哭》,省3块不香吗?的更多相关文章
- Python 应用爬虫下载QQ音乐
Python应用爬虫下载QQ音乐 目录: 1.简介怎样实现下载QQ音乐的过程: 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首 ...
- Appium + Python 测试 QQ 音乐 APP的一段简单脚本
1. 大致流程 + 程序(Python):打开 QQ 音乐,点击一系列接收按键,进入搜索音乐界面,输入『Paradise』,播放第一首音乐. 2. Python 脚本如下 from appium im ...
- Android 9 适配怎么做? “QQ音乐”优化实录
WeTest 导读 2018年8月7日,Google对外发布最新 Android 9.0 正式版系统,并宣布系统版本Android P 被正式命名为代号“Pie”,最新系统已经正式推送包括谷歌Pixe ...
- Python爬虫实战一之爬取QQ音乐
一.前言 前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...
- 手把手教你使用Python抓取QQ音乐数据(第一弹)
[一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...
- 手把手教你使用Python抓取QQ音乐数据(第二弹)
[一.项目目标] 通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精 ...
- Python Scrapy的QQ音乐爬虫 音乐下载、爬取歌曲信息、歌词、精彩评论
QQ音乐爬虫(with scrapy)/QQ Music Spider UPDATE 2019.12.23 已实现对QQ音乐文件的下载,出于版权考虑,不对此部分代码进行公开.此项目仅作为学习交流使用, ...
- 亲测可用!免费下载QQ音乐大部分资源!
优化后亲测可用!免费下载QQ音乐大部分资源 通知 时间问题 博客园这边暂时停更要下载的去GitHub或者90盘 GitHub项目地址 https://github.com/TotoWang-hhh/m ...
- QQ音乐API分析记录
我一直是QQ音乐的用户,最近想做一个应用,想用QQ音乐的API,搜索了很久无果,于是就自己分析QQ音乐的API. 前不久发现QQ音乐出了网页版的,是Flash的,但是,我用iPhone打开这个链接的时 ...
随机推荐
- vue 自动化路由实现
1.需求描述 在写vue的项目中,一般情况下我们每添加一个新页面都得添加一个新路由.为此我们在项目中会专门的一个文件夹来管理路由,如下图所示 那么有没有一种方案,能够实现我们在文件夹中新建了一个vue ...
- d3.js 教程 模仿echarts柱状图
由于最近工作不是很忙,隧由把之前的charts项目用d3.js重写的一下,其实d3.js文档很多,但是入门不是很难,可是想真的能做一个完成的,交互良好的图还是要下一番功夫的.今天在echarts找到了 ...
- C++string,char* 字符数组,int类型之间的转换
string.int 常见类型之间相互转换 int & string 之间的转换 C++中更多的是使用流对象来实现类型转换 针对流对象 sstream实现 int,float 类型都可以实现 ...
- UVA 11294 wedding 2-sat
可以把一对夫妇当成一个节点,然后拆点的话,h和w分别为真和假,然后直接按照题目中说的建图染色即可 #include <iostream> #include <cstdio> # ...
- CF 435B Little Pony and Harmony Chest
Little Pony and Harmony Chest 题解: 因为 1 <= ai <= 30 所以 1 <= bi <= 58, 因为 59 和 1 等效, 所以不需 ...
- shell 的while语句
转 http://blog.chinaunix.net/uid-25880122-id-2901409.html while循环的格式 while expression do command co ...
- 那些年,我们误解的 JavaScript 闭包
说到闭包,大部分的初始者,都是谈虎色变的.最近对闭包,有了自己的理解,就感觉.其实我们误解闭包.也被网上各种说的闭包的解释给搞迷糊. 一句话:要想理解一个东西还是看权威的东西. 下面我来通俗的讲解一个 ...
- Springboot中RedisTemplate的操作
Springboot中RedisTemplate的操作 @Autowired private RedisTemplate redisTemplate; @Autowired private Strin ...
- Mybatis打印SQL
配置mybatis日志级别,打印SQL 1.方案一:配置日志级别 logging.level.org.springboot.demo.mapper=debug 其中org.springboot.dem ...
- JavaScript 基础入门
JavaScript 基础入门 JavaScript 的组成 JS 由三部分组成,它们分别是:ECMAScript.DOM.BOM. ECMAScript 因为网景开发了JavaScrip ...