Python爬取网易云音乐数据
时间: 2023-10-09 19:12:27 浏览: 106
以下是Python爬取网易云音乐数据的示例代码:
```python
import requests
import json
# 设置请求头信息
headers = {
'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'}
# 定义获取歌曲信息的函数
def get_song_info(song_id):
"""
获取指定歌曲的信息
:param song_id: 歌曲ID
:return: 歌曲信息字典
"""
url = 'https://api.imjad.cn/cloudmusic/?type=detail&id={}'.format(song_id)
response = requests.get(url, headers=headers)
song_info = json.loads(response.text)
return song_info
# 定义获取歌单信息的函数
def get_playlist_info(playlist_id):
"""
获取指定歌单的信息
:param playlist_id: 歌单ID
:return: 歌单信息字典
"""
url = 'https://api.imjad.cn/cloudmusic/?type=playlist&id={}'.format(playlist_id)
response = requests.get(url, headers=headers)
playlist_info = json.loads(response.text)
return playlist_info
# 示例:获取歌单信息并输出歌曲名称和歌手
playlist_id = '315577550'
playlist_info = get_playlist_info(playlist_id)
tracks = playlist_info['playlist']['tracks']
for track in tracks:
song_id = track['id']
song_info = get_song_info(song_id)
song_name = song_info['songs'][0]['name']
artists = song_info['songs'][0]['ar']
artist_names = [artist['name'] for artist in artists]
print('歌曲:{},歌手:{}'.format(song_name, ', '.join(artist_names)))
```
首先,我们定义了两个函数:`get_song_info`和`get_playlist_info`,分别用于获取单个歌曲和歌单的信息。这里使用了一个第三方的网易云音乐API,可以直接传入歌曲或歌单的ID来获取对应的信息。
然后,我们调用`get_playlist_info`函数获取指定歌单的信息,并从中提取出歌曲列表。对于每个歌曲,我们调用`get_song_info`函数获取其信息,并从中提取出歌曲名称和歌手信息。最后,我们将这些信息输出。
需要注意的是,我们在请求时设置了请求头信息,这是为了模拟浏览器的请求,避免被网站识别为爬虫而被屏蔽。此外,我们还使用了`json`模块将返回的JSON字符串转换为Python字典,方便处理和提取信息。
阅读全文