【一、项目目标】

通过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音乐数据(第二弹)相关推荐

  1. 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据(第三弹)-阿里云开发者社区...

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  2. python音乐的数据抓取与分析_手把手教你使用Python抓取QQ音乐数据!

    [一.项目目标] 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 通过手把手教你使用Python抓取QQ音乐 ...

  3. python网页爬虫循环获取_手把手教你用 Python 搞定网页爬虫

    原标题:手把手教你用 Python 搞定网页爬虫 编译:欧剃 作为数据科学家的第一个任务,就是做网页爬取.那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的 ...

  4. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

  5. python处理时间序列非平稳_手把手教你用Python处理非平稳时间序列

    简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...

  6. 如何用python抓取qq音乐_手把手教你使用Python抓取QQ音乐数据

    [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...

  7. python热搜排行功能_手把手教你用Python+Pyecharts让微博热搜榜动起来

    今天教大家如何用pyecharts制作微博热搜榜动态展示视频,先上视频看看效果: 教程主要有2部分: 一是python爬取微博热搜内容 二是用pyecharts制作动态视频 下面给大家详细介绍一下 一 ...

  8. python基金比较上机题_手把手教你用python选基金

    买基金是上班族用零钱进行投资的正确姿势.而自己用数据来选基金比听别人推荐买什么基金要好上一百倍. 步骤如下: 1.获取网上的基金的排名信息,使用四四三三法则筛选出排名靠前的基金.2.获取网上的基金的基 ...

  9. python链家网爬虫_手把手教你利用Python网络爬虫获取链家网的房产信息

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来 ...

最新文章

  1. mysql不等于判断时,空值过滤问题
  2. 如何用互联网上的广告来赚取广告费——有点吹牛吗?
  3. leetcode(二)二分法查找算法
  4. windows phone (12) 小试自定义样式
  5. sql中 N’ 的作用
  6. mysql 排序num_MySQL 实现row_number() 分组排序功能
  7. python处理txt文件_python处理txt文件
  8. ios公司开发者账号申请分享攻略
  9. 《Maintainable JavaScript》读书笔记
  10. 比反射更快:委托 第3部分
  11. HashMap的小知识点
  12. 一款使用RxJava+Retrofit+MVP的快播App开源啦!
  13. 电视和计算机共享视频,电脑中的图片视频一键共享到电视上去看
  14. Android CameraX 仿一甜相机(录像、拍照、可调节尺寸、聚焦、照明、网格线),最全的CameraX教程
  15. iPhone手机屏幕尺寸详细表格、A10和A11处理器介绍
  16. 如何同步修改git项目名称和本地项目名称
  17. 教你如何使用语雀提高效率
  18. 计算机图标在任务栏如何取消,电脑任务栏的图标为什么从任务栏取消不了
  19. SQL Server 查看列,添加列,修改列,删除列
  20. 【Python 身份证JSON数据读取】——身份证前六位地区码对照表文件(最全版-JSON文件)

热门文章

  1. galeracluster高可用集群安装(mysql)
  2. 数据结构(C语言)图的创建和度数统计(基础)
  3. Mac m1上使用docker搭建C++开发调试环境
  4. 官方【考研预调剂系统】开通!但可能没有你要的调剂信息
  5. 来认识一下这个宝藏工具人吧
  6. HTML页面如何添加ICO图标?
  7. 关于小程序中地图的应用(联动搜索,模糊查询,定位导航)
  8. 串口+RS485驱动
  9. 制作属于自己图片样式的卡通词云
  10. 向量的内积外积与其几何意义