网络爬虫爬取网易云音乐数据的Python代码
时间: 2023-06-17 07:08:36 浏览: 134
以下是一个简单的Python爬虫脚本,可以用于爬取网易云音乐的歌曲数据:
```python
import requests
import json
headers = {
'Referer': 'http://music.163.com',
'Host': 'music.163.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}
def get_song_list(artist_id, offset):
song_list = []
url = 'http://music.163.com/api/artist/{}'.format(artist_id)
params = {
'offset': offset,
'limit': 50
}
response = requests.get(url, headers=headers, params=params)
result = json.loads(response.text)
for song in result['hotSongs']:
song_info = {
'song_id': song['id'],
'song_name': song['name'],
'artist': song['artists'][0]['name'],
'album': song['album']['name'],
'duration': song['duration'],
'mp3_url': get_song_url(song['id'])
}
song_list.append(song_info)
return song_list
def get_song_url(song_id):
url = 'http://music.163.com/api/song/detail/?id={}&ids=[{}]'.format(song_id, song_id)
response = requests.get(url, headers=headers)
result = json.loads(response.text)
return result['songs'][0]['mp3Url']
if __name__ == '__main__':
artist_id = '6452' # 网易云音乐中艺人ID,这里以周杰伦为例
total_song_list = []
for i in range(0, 100, 50): # 爬取前100首歌曲
song_list = get_song_list(artist_id, i)
total_song_list.extend(song_list)
print(total_song_list)
```
在上面的代码中,`get_song_list`函数用于获取某个艺人的歌曲列表,`get_song_url`函数用于获取某个歌曲的mp3链接。最后在`main`函数中,我们可以通过循环调用`get_song_list`函数来获取所有的歌曲数据。
阅读全文