python爬虫网易云音乐可视化
时间: 2025-01-09 20:38:07 浏览: 2
### Python 爬虫网易云音乐数据采集与可视化
#### 安装必要的库
为了实现网易云音乐的数据采集和可视化,需先安装几个重要的Python库。这些库包括`pyecharts`用于创建交互式的图表,`matplotlib`提供强大的绘图能力,以及`WordCloud`用来生成词云图像。
```bash
pip install pyecharts matplotlib wordcloud requests pandas
```
#### 数据获取过程
由于直接访问API接口可能违反服务条款,在此建议采用模拟浏览器请求的方式来进行网页抓取工作。可以借助`requests`库发送HTTP请求,并配合解析HTML文档结构提取所需信息[^1]。
#### 示例代码:爬取热门歌曲及其评论
下面是一个简单的例子展示如何使用Python编写一个基本的爬虫程序来获取某首歌下的部分用户评论:
```python
import json
import time
from random import randint
import requests
def get_song_comments(song_id, page=0):
url = f"https://music.163.com/api/v1/resource/comments/R_SO_4_{song_id}?limit=20&offset={page * 20}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Referer': 'https://music.163.com/'
}
response = requests.get(url=url, headers=headers).json()
comments_list = []
if "hotComments" in response:
for item in response["hotComments"]:
comment_info = {"content": item['content'], "likedCount": item['likedCount']}
comments_list.append(comment_info)
return comments_list
if __name__ == '__main__':
song_ids = ['189736'] # 此处填写想要抓取评论的目标歌曲ID列表
all_data = []
for sid in song_ids:
data = get_song_comments(sid)
all_data.extend(data)
sleep_time = randint(1, 3) # 设置随机等待时间防止被封IP
print(f"Crawling {sid}, sleeping for {sleep_time} seconds.")
time.sleep(sleep_time)
with open('comments.json', 'w+', encoding='utf-8') as file_obj:
json.dump(all_data, file_obj, ensure_ascii=False, indent=4)
```
这段脚本会遍历给定的一系列歌曲ID,并从中抽取每条热评的内容及点赞数保存到本地文件中。注意这里仅作为学习交流用途,请勿滥用以免触犯法律风险[^2]。
#### 数据处理与可视化
完成数据收集之后就可以着手准备数据清洗、整理等工作了。对于文本类型的字段可考虑去除特殊字符、停用词过滤等预处理操作;而对于数值型特征则要关注异常值检测等问题。最后利用上述提到过的各种图形工具绘制出直观的结果呈现出来。
例如可以通过如下方式快速构建一张柱状图显示不同情感倾向下各有多少条评论:
```python
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_json('comments.json')
positive_count = df[df.content.str.contains('好|棒|喜欢')].shape[0]
negative_count = df[df.content.str.contains('差|不好|讨厌')].shape[0]
plt.bar(['Positive', 'Negative'], [positive_count, negative_count])
plt.title('Sentiment Analysis of Comments')
plt.show()
```
阅读全文