【一、项目目标】

通过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

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.代码实现:获取歌词

实现方法如下:

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('下载成功,按回车键退出!')

代码实现:获取评论。

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('下载成功,按回车键退出!')

封装函数

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音乐”四个字进行获取。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

pythonqq音乐爬虫_手把手教你使用Python抓取QQ音乐数据(第二弹)相关推荐

  1. 手把手教你入侵网站修改数据_手把手教你使用Python抓取QQ音乐数据(第四弹)...

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

  2. python爬取qq音乐歌曲链接为什么播放不出来_手把手教你使用Python抓取QQ音乐数据(第一弹)...

    原标题:手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. ...

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

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

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

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

  5. qq 音乐 python 登录_手把手教你使用Python抓取QQ音乐数据(第一弹)

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

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

    [一.项目目标] 通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精 ...

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

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

  8. python爬取音乐源码_手把手教你使用Python抓取QQ音乐数据(第一弹)

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

  9. 手把手教你使用Python抓取QQ音乐数据!

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

最新文章

  1. Linux命令(27):shell 结合expect,多服务器批量分发数据
  2. Markdown2.py And Pygments Test
  3. latex二元关系符号
  4. 【论文相关】历年CVPR、ICCV、ECCV论文合集下载
  5. Android环境的安装遇到的问题
  6. 面试题 17.21. 直方图的水量/42. 接雨水
  7. 逃税被罚13.4亿的薇娅将于3月复出?
  8. 2014年读过的那些书
  9. 浅谈C++设计模式之抽象工厂(Abstract Factory)
  10. iOS视频裁剪、拼接、添加水印、添加背景音乐
  11. 大数据分析平台建设项目需求报告与技术方案
  12. winbox 端口扫描_ROS软路由限速、防syn、ip伪装、mac绑定、防火墙、屏蔽端口
  13. c4d安装没有出现语言文字,关于C4D以及渲染器插件安装时遇到的问题以及解决方法...
  14. 【ArcGIS】去除影像黑边的几种方法
  15. 求有10个整型元素的数组中最大元素及其下标。
  16. 【ZT】iSpring Free Cam – 免费易用的「录制屏幕」工具 [Windows]
  17. 计算机管理器用户怎么打开文件,电脑文件管理器怎么打开文件夹 文件管理器打开想要的文件夹方法-电脑教程...
  18. 金融IT应小心陷入单纯追求技术目标的误区
  19. 在JS中利用for...in循环遍历对象
  20. Vue 引入高德地图 vue-amap

热门文章

  1. 摄影测量中的计算机视觉之3D homography
  2. ceil 函数和 Floor 函数(C语言)
  3. spark demo 运行
  4. win32 zbar
  5. 以计算机为题的想象作文600字,电脑的自述想象作文
  6. 小球吃金币unity教程_Unity实验一 ---吃小球游戏
  7. C++11开发中的Atomic原子操作
  8. OpenGL原理与实践——核心模式(六):光照贴图、光源分类以及多光源场景主要源码实现
  9. 常见的外链建设方法有哪些?
  10. springboot简单解决跨域