python爬取qq音乐歌曲数据
时间: 2025-03-23 09:15:17 浏览: 42
### 如何使用 Python 爬取 QQ 音乐的歌曲数据
要实现对 QQ 音乐歌曲数据的爬取,可以按照以下方法操作:
#### 数据请求分析
QQ 音乐通常会通过 XHR 请求返回 JSON 格式的响应数据。这些数据包含了歌曲的相关信息,例如歌名、专辑名称以及播放链接等[^5]。
#### 使用 Requests 库发送 HTTP 请求
可以通过 `requests` 库向目标 URL 发送 GET 或 POST 请求来获取所需的数据。以下是基本代码示例:
```python
import requests
url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg' # 假设这是接口地址
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json'}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
else:
print(f"Request failed with status code {response.status_code}")
```
上述代码中定义了一个简单的 GET 请求,并设置了必要的参数和头部信息以便成功访问 API 接口[^1]。
#### 解析 JSON 数据
一旦接收到服务器返回的内容,则需将其解析为易于处理的形式——通常是字典或者列表结构。下面展示如何提取特定字段的信息:
```python
for item in data['data']['list']:
song_name = item['dissname']
singer_name = ', '.join([singer['name'] for singer in item['creator']])
print(f"{song_name} by {singer_name}")
```
这里假设每首歌都有对应的歌手名字数组;如果实际情况有所不同,请调整相应逻辑以适配实际返回的结果集。
#### 存储到数据库
为了长期保存所获得的数据,可考虑利用 MySQL 这样的关系型数据库管理系统来进行管理。连接至本地安装好的 MySQL 实例并将记录插入表中的例子如下所示:
```sql
CREATE TABLE IF NOT EXISTS qq_music (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
artist VARCHAR(255)
);
```
接着,在 Python 脚本里加入这段用于建立与数据库之间联系的部分:
```python
import pymysql.cursors
connection = pymysql.connect(host='localhost',
user='root',
password='password',
database='test_db',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
sql = "INSERT INTO `qq_music` (`title`, `artist`) VALUES (%s, %s)"
cursor.execute(sql, (song_name, singer_name))
finally:
connection.close()
```
此部分展示了怎样安全地执行 SQL 插入语句而不会泄露敏感凭据[^4]。
---
阅读全文
相关推荐


















