Python实战:抓取QQ音乐指定歌手歌曲列表

蓝鲸
蓝鲸
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍如何使用Python语言结合requests和json库,从QQ音乐网站抓取指定歌手的歌曲清单。通过解析网页请求头、分析API参数及编写自动化脚本,实现以CSV格式输出歌曲数据。文章包含详细操作步骤、完整代码示例及运行结果分析,帮助开发者掌握基础的网络爬虫技能。

1、实验内容:

本实验旨在从QQ音乐平台获取特定歌手的歌曲列表。具体演示将以小红莓乐队(The Cranberries)的歌曲清单为例进行说明。

实验的核心目标是提取QQ音乐中某位歌手的单曲列表,主要依赖的技术库包括requests用于网络请求,以及json用于数据处理。

2、实验步骤如下所示:

2.1、首先需要研究QQ音乐网站的robots.txt协议,确认数据抓取的法律与合规边界。

2.2、访问QQ音乐网页版,检查页面详情以熟悉界面结构。

2.3、深入分析网页源代码(Elements),定位数据加载机制。

2.4、点击Headers标签页,提取发起请求所需的相关参数。

2.5、根据实际分析结果,编写适配的代码以执行抓取操作。

简易版本将爬取结果以CSV文件形式呈现,完整代码实现如下:

import requests  # 请求
from fake_useragent import UserAgent
import json
print("请输入您想要爬取清单的歌手名:")
name = input()
ua = UserAgent()
headers = {
  'User-Agent': ua.random,
  'cookie':'RK=LdWlHMsQ+b; ptcz=42785168e679b66b7913e09a4387fc94c5ad2d81419840eb33a502abc14ae6c6; pgv_pvid=4366402929; fqm_pvqid=ed1a5c76-5778-4d72-aa4f-389d94cd126e; ts_uid=886687551; fqm_sessionid=2b4a4a2f-b921-4e70-861d-54a608695f10; pgv_info=ssid=s5047316408; ts_refer=www.so.com/link; _qpsvr_localtk=0.49574447171587144; login_type=1; wxopenid=; tmeLoginType=2; psrf_qqaccess_token=D40E8A445E33FC38FB47291B44C03E96; qqmusic_key=Q_H_L_5Opuh_YbF8NbIlG-FqC_2ns2gXyWSTh_cplWyZPhEpyIWDVtQUGLwQQ; psrf_access_token_expiresAt=1656146941; psrf_qqunionid=93ABF9072A8734C330E108787CC182AE; uin=2363310076; wxunionid=; qm_keyst=Q_H_L_5Opuh_YbF8NbIlG-FqC_2ns2gXyWSTh_cplWyZPhEpyIWDVtQUGLwQQ; psrf_musickey_createtime=1648370941; qm_keyst=Q_H_L_5Opuh_YbF8NbIlG-FqC_2ns2gXyWSTh_cplWyZPhEpyIWDVtQUGLwQQ; psrf_qqopenid=900C2C2A46F36818FEB00C24A5EEC6B0; wxrefresh_token=; psrf_qqrefresh_token=8289BF671C8907272471F03D564F5A69; euin=owosoio5oenl7c**; ts_last=y.qq.com/n/ryqq/search',
  'referer':'https://y.qq.com/'
}
 
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=10&w={}'
resp = requests.get(url.format(name), headers=headers)
json_str = resp.text
json_str = json_str[9:-1]
json_dict = json.loads(json_str)
songlist = json_dict['data']['song']['list']
f = open("list.csv", mode="w", encoding="utf-8")
for song in songlist:
  print('歌名或专辑名为:'+song['albumname'])
  f.write(song['albumname'])
  f.write('\n')

2.6、通过运行代码展示最终抓取结果。

此处以歌手周深的歌曲列表为例进行演示:

3、实验分析

4、遇到的困难和解决点:

至此,关于使用Python获取QQ音乐指定歌手歌单的教程介绍完毕。如需了解更多Python抓取歌手歌单的相关内容,建议搜索本站过往文章或继续阅读后续系列教程,感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表