如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第二弹)
【一、项目目标】
通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。
此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精彩评论。
【二、需要的库】
主要涉及的库有:requests、json、html
【三、项目实现】
1.以歌曲“泡沫”为例,查看该界面的XHR
2.通过对XHR的Size进行排序,逐个查看(参考英文含义),我们看到第一个红框内是歌曲评论,第二个框内是歌词!
3.分别查看这两条数据Headers里面Parms参数。
4.发现这几个参数可能会代表不同的歌曲,那到底是哪个呢,我们在代开另一首歌对比一下。
5.发现只有这个topid不同,其他都一样,这就代表topid代表不同歌曲的id,同理我们看一下歌词。
6、确定下来:musicid= topid = 歌曲的id,接下来我们的任务是找到这个id。
7.返回以下界面,也就是我们上一个项目的主战场。
参考上一个项目,很容易找到“id”的值就是我们要寻找的id。
所以思路确定下来:先通过input()输入歌名生成url_1找到该歌曲的“id”参数,再生成url_2获取歌词和评论。
8.代码实现:获取歌曲id,如下所示:
import requests,html,json
url_1 = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
# 标记了请求从什么设备,什么浏览器上发出
}
i = input('请输入需要查询歌词的歌曲名称:')
params = {'ct': '24', 'qqmusic_ver': '1298', 'new_json': '1', 'remoteplace': 'txt.yqq.song', 'searchid': '71600317520820180', 't': '0', 'aggr': '1', 'cr': '1', 'catZhida': '1', 'lossless': '0', 'flag_qc': '0', 'p': '1', 'n': '10', 'w': i, 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0'}
res_music = requests.get(url_1,headers=headers,params=params)
# 发起请求
json_music = res_music.json()
id = json_music['data']['song']['list'][0]['id']
print(id)
9.代码实现:获取歌词
实现方法如下:
url_2 = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_yqq.fcg'
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
# 标记了请求从什么设备,什么浏览器上发出
}
params = {
'nobase64':'1',
'musicid':id, #用上面获取到的id
'-':'jsonp1',
'g_tk':'5381',
'loginUin':'0',
'hostUin':'0',
'format':'json',
'inCharset':'utf8',
'outCharset':'utf-8',
'notice':'0',
'platform':'yqq.json',
'needNewCode':'0',
}
res_music = requests.get(url_2,headers=headers,params=params)
# 发起请求
js = res_music.json()
lyric = js['lyric']
lyric_html = html.unescape(lyric) #用了转义字符html.unescape方法
# print(lyric_html)
f1 = open(i+'歌词.txt','a',encoding='utf-8')
f1.writelines(lyric_html)
f1.close() #存储到txt中
input('下载成功,按回车键退出!')
10. 代码实现:获取评论。
url_3 = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg'
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
# 标记了请求从什么设备,什么浏览器上发出
}
params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'GB2312', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0', 'cid': '205360772', 'reqtype': '2', 'biztype': '1', 'topid': id, 'cmd': '8', 'needmusiccrit': '0', 'pagenum': '0', 'pagesize': '25', 'lasthotcommentid': '', 'domain': 'qq.com', 'ct': '24', 'cv': '10101010'}
res_music = requests.get(url_3,headers=headers,params=params)
# 发起请求
js = res_music.json()
comments = js['hot_comment']['commentlist']
f2 = open(i+'评论.txt','a',encoding='utf-8') #存储到txt中
for i in comments:
comment = i['rootcommentcontent'] + '\n——————————————————————————————————\n'
f2.writelines(comment)
# print(comment)
f2.close()
input('下载成功,按回车键退出!')
10. 封装函数
11.结果展示
【四、总结】
1.项目二比项目一稍复杂一点,多了一步获取歌曲id的步骤;
2.通过XHR爬取数据一般要使用json,格式为:
res =requests.get(url)
json =res.json()
list = json[‘’][‘’]…
3.学习了转义字符html.unescape方法;
4.保存到txt还可以用 with open() as的方法;
5.Python爬取QQ音乐数据(第三弹)将为大家带来如何爬取更多评论,并生成词云图(wordcloud)。
6.需要本文源码的话,请在公众号后台回复“QQ音乐”四个字进行获取。
如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第二弹)相关推荐
- 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第三弹)-阿里云开发者社区...
[一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...
- python音乐的数据抓取与分析_手把手教你使用Python抓取QQ音乐数据!
[一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...
- python网页爬虫循环获取_手把手教你用 Python 搞定网页爬虫
原标题:手把手教你用 Python 搞定网页爬虫 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的 ...
- python正确的输入语句_手把手教你在python中如何使用while True语句
在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...
- python处理时间序列非平稳_手把手教你用Python处理非平稳时间序列
简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...
- 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据
[一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...
- python热搜排行功能_手把手教你用Python+Pyecharts让微博热搜榜动起来
今天教大家如何用pyecharts制作微博热搜榜动态展示视频,先上视频看看效果: 教程主要有2部分: 一是python爬取微博热搜内容 二是用pyecharts制作动态视频 下面给大家详细介绍一下 一 ...
- python基金比较上机题_手把手教你用python选基金
买基金是上班族用零钱进行投资的正确姿势.而自己用数据来选基金比听别人推荐买什么基金要好上一百倍. 步骤如下: 1.获取网上的基金的排名信息,使用四四三三法则筛选出排名靠前的基金.2.获取网上的基金的基 ...
- python链家网爬虫_手把手教你利用Python网络爬虫获取链家网的房产信息
点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来 ...
最新文章
- mysql不等于判断时,空值过滤问题
- 如何用互联网上的广告来赚取广告费——有点吹牛吗?
- leetcode(二)二分法查找算法
- windows phone (12) 小试自定义样式
- sql中 N’ 的作用
- mysql 排序num_MySQL 实现row_number() 分组排序功能
- python处理txt文件_python处理txt文件
- ios公司开发者账号申请分享攻略
- 《Maintainable JavaScript》读书笔记
- 比反射更快:委托 第3部分
- HashMap的小知识点
- 一款使用RxJava+Retrofit+MVP的快播App开源啦!
- 电视和计算机共享视频,电脑中的图片视频一键共享到电视上去看
- Android CameraX 仿一甜相机(录像、拍照、可调节尺寸、聚焦、照明、网格线),最全的CameraX教程
- iPhone手机屏幕尺寸详细表格、A10和A11处理器介绍
- 如何同步修改git项目名称和本地项目名称
- 教你如何使用语雀提高效率
- 计算机图标在任务栏如何取消,电脑任务栏的图标为什么从任务栏取消不了
- SQL Server 查看列,添加列,修改列,删除列
- 【Python 身份证JSON数据读取】——身份证前六位地区码对照表文件(最全版-JSON文件)