手把手教你使用Python抓取QQ音乐数据!
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了手把手教你使用Python抓取QQ音乐数据!,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3889字,纯文字阅读大概需要6分钟。
内容图文
![手把手教你使用Python抓取QQ音乐数据!](/upload/InfoBanner/zyjiaocheng/629/c09246e756f34b0d98810087c22937cf.jpg)
【一、项目目标】
通过 Python爬取QQ音乐数据(一) 我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。
此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精彩评论。
【二、需要的库】
主要涉及的库有:requests、json、html
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101428526.jpg)
【三、项目实现】
1.以歌曲“泡沫”为例,查看该界面的XHR
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101428718.jpg)
2.通过对XHR的Size进行排序,逐个查看(参考英文含义),我们看到第一个红框内是歌曲评论,第二个框内是歌词!
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101429243.jpg)
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101429495.jpg)
3.分别查看这两条数据Headers里面Parms参数。
4.发现这几个参数可能会代表不同的歌曲,那到底是哪个呢,我们在代开另一首歌对比一下。
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101429732.jpg)
5.发现只有这个topid不同,其他都一样,这就代表topid代表不同歌曲的id,同理我们看一下歌词。
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101430114.jpg)
6、确定下来:musicid= topid = 歌曲的id,接下来我们的任务是找到这个id。
7.返回以下界面,也就是我们上一个项目的主战场。
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101430274.jpg)
参考上一个项目,很容易找到“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('下载成功,按回车键退出!')
- 代码实现:获取评论。
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('下载成功,按回车键退出!')
- 封装函数
11.结果展示
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101430432.jpg)
![手把手教你使用Python抓取QQ音乐数据! - 文章图片](/upload/getfiles/0001/2021/5/1/20210501101430767.jpg)
【四、总结】
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)。
源码后台私信小编 01即可获取
内容总结
以上是互联网集市为您收集整理的手把手教你使用Python抓取QQ音乐数据!全部内容,希望文章能够帮你解决手把手教你使用Python抓取QQ音乐数据!所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。