利用python3 爬取 网易云 上 周杰伦所有专辑,歌曲,评论,并完成可视化分析已经歌曲情绪化分析...
时间: 2024-04-04 11:31:30 浏览: 302
一个获取网易云音乐歌手、专辑、歌曲、评论、歌词等数据的Python爬虫.zip
好的,这是一个比较复杂的任务,需要多个步骤来完成。首先,需要使用 Python 网络爬虫库 requests 和 Beautiful Soup 库来爬取网易云音乐的数据。
1. 爬取周杰伦所有专辑和歌曲
首先需要获取周杰伦的 artist_id,可以在网易云音乐中搜索“周杰伦”,然后进入他的个人主页。在网址中可以看到他的 artist_id,例如:https://music.163.com/#/artist?id=6452,其中 6452 就是他的 artist_id。
接下来,使用 requests 库来请求周杰伦的专辑信息,例如:
```python
import requests
artist_id = '6452'
url = 'https://music.163.com/api/artist/albums/{0}?limit=1000'.format(artist_id)
headers = {
'Referer': 'https://music.163.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
```
这个请求会返回一个 JSON 格式的数据,其中包含了周杰伦所有的专辑信息,包括专辑 ID、名称、封面等等。可以使用 json 库来解析这个数据:
```python
import json
data = json.loads(response.text)
albums = data['hotAlbums']
for album in albums:
album_id = album['id']
album_name = album['name']
album_cover = album['picUrl']
# 获取专辑中的所有歌曲
url = 'https://music.163.com/api/album/{0}'.format(album_id)
response = requests.get(url, headers=headers)
data = json.loads(response.text)
songs = data['album']['songs']
for song in songs:
song_id = song['id']
song_name = song['name']
song_url = 'https://music.163.com/song?id={0}'.format(song_id)
print(song_name, song_url)
```
这里循环遍历了每个专辑,然后获取了专辑中的所有歌曲,打印出了歌曲名称和链接。
2. 爬取歌曲评论
接下来需要爬取每首歌曲的评论。可以使用类似的方法,请求歌曲评论的 API,例如:
```python
song_id = '1436664680'
url = 'https://music.163.com/api/v1/resource/comments/R_SO_4_{0}?limit=100'.format(song_id)
response = requests.get(url, headers=headers)
```
这个请求返回的数据也是 JSON 格式的,其中包含了评论的内容、用户信息等等。可以使用 json 库来解析这个数据:
```python
data = json.loads(response.text)
comments = data['comments']
for comment in comments:
comment_content = comment['content']
comment_time = comment['time']
comment_user = comment['user']['nickname']
print(comment_content, comment_time, comment_user)
```
这里循环遍历了每个评论,然后获取了评论的内容、时间和用户信息,打印出了这些信息。
3. 可视化分析和情绪化分析
最后,可以使用 Python 的数据分析和可视化库来对爬取到的数据进行分析和可视化展示。例如,可以使用 pandas 库来读取评论数据,然后使用 matplotlib 库来绘制情感分析的图表:
```python
import pandas as pd
import matplotlib.pyplot as plt
from snownlp import SnowNLP
df = pd.read_csv('comments.csv', header=None, names=['content', 'time', 'user'])
df['sentiment'] = df['content'].apply(lambda x: SnowNLP(x).sentiments)
df['time'] = pd.to_datetime(df['time'])
df.set_index('time', inplace=True)
df.resample('D').mean().plot()
plt.show()
```
这里使用了 snownlp 库来对评论进行情感分析,然后使用 pandas 库对评论进行时间序列重采样,最后使用 matplotlib 库来绘制图表。
以上就是利用 Python 爬取网易云音乐数据,并进行可视化分析和情感分析的一个简单示例。
阅读全文