python爬取网易云音乐数据,要获取歌曲的名称、歌手名字、播放量、歌曲评论和歌曲链接等,要爬取大量数据,保存成csv文件
时间: 2025-06-28 07:00:30 浏览: 21
为了完成从网易云音乐抓取歌曲信息的任务,并将结果保存到CSV文件中,您需要先了解几个关键步骤和技术点:
### 1. 分析目标网站
首先访问网易云音乐网页版 (music.163.com),并找到包含所需数据元素的具体页面位置及HTML结构。对于大部分现代JavaScript渲染的站点而言,直接解析静态HTML内容无法获得动态加载的数据;因此建议利用开发者工具(F12)查看网络请求,定位API接口。
### 2. 模拟HTTP请求
通过浏览器开发者工具捕获实际发生的AJAX请求后,使用Python库如`requests`发送GET/POST请求给相应的API endpoint, 并传递必要的查询参数(例如歌单ID)。请注意遵守robots.txt规则以及平台的服务条款,在合理的时间间隔内发出请求避免触发反爬机制。
```python
import requests
from lxml import etree
url = "https://api地址"
headers={
'User-Agent': 'Mozilla/5.0',
}
params = {
# 根据实际情况填写参数
}
response = requests.get(url=url,params=params, headers=headers)
data=response.json()
```
### 3. 解析JSON响应 & 提取字段
假设返回的是json格式的结果,则可以直接遍历字典列表提取每个项目的标题、艺术家姓名等属性值。如果遇到加密算法或者其他复杂处理逻辑,可以考虑借助开源项目或者社区资源寻找解决方案。
```python
songs_list=[]
for song in data['result']['tracks']:
item={}
item["song_name"]=song['name']
item["artist"]=[i['name'] for i in song['ar']]
try:
item["play_count"]=int(song['pst']) # 可能不存在此键
except KeyError as e:
print(e,"该条目无播放次数")
item["play_count"]="未知"
songs_list.append(item)
# 对于评论部分,一般单独有对应的URL获取特定歌曲下的所有评论
comment_url=f"https://music.163.com/api/v1/resource/comments/{item['id']}?limit=100&offset=0"
comments=requests.get(comment_url).json()['hotComments']
# 这里只展示了如何收集基本的信息和热门评论作为示例,
# 实际操作过程中还需要注意异常情况的捕捉和其他功能需求的支持。
```
### 4. 数据存储 - CSV 文件生成
最后一步就是把整理好的记录写入csv文档了。我们可以选择pandas DataFrame 或者内置csv模块来进行高效的操作:
```python
import pandas as pd
df=pd.DataFrame(songs_list)
df.to_csv('netease_music.csv',index=False,encoding='utf_8_sig')
# 使用 utf_8_sig 编码确保 Excel 能正确显示中文字符
```
以上就是一个完整的流程概览,当然这仅仅是开始阶段的基础版本,随着项目深入还有很多细节需要注意完善。希望这个指南对你有所帮助!
阅读全文
相关推荐


















