爬取网易云音乐四大榜单
时间: 2025-05-31 12:16:12 浏览: 26
### 使用Python爬取网易云音乐四大榜单数据
为了实现这一目标,可以采用`requests`库来发送HTTP请求,并利用`json`模块解析返回的数据。此外,还需要处理可能存在的反爬机制以及确保合法合规地访问API接口。
```python
import requests
import json
import os
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
}
def get_toplists():
url = "http://music.163.com/api/toplist/detail"
response = requests.get(url, headers=headers).text
result = json.loads(response)
toplists = []
for playlist in result['toplists']:
if playlist["name"] in ["云音乐新歌榜", "云音乐热歌榜", "网易原创歌曲榜", "云音乐飙升榜"]:
toplists.append({
"id": playlist["id"],
"name": playlist["name"]
})
return toplists
def download_songs(toplist_id):
song_list_url = f"http://music.163.com/api/v3/playlist/detail?id={toplist_id}"
res = requests.get(song_list_url, headers=headers).text
songs_data = json.loads(res)
tracks = songs_data['playlist']['tracks']
for track in tracks[:10]: # 只抓取前10首作为示例
name = track['name'].replace('/', '_')
artists = ','.join([artist['name'] for artist in track['ar']])
file_path = f'./网易云歌单/{artists} - {name}.mp3'
dir_name = os.path.dirname(file_path)
if not os.path.exists(dir_name):
os.makedirs(dir_name)
print(f'Downloading: {file_path}')
audio_url = track['al']['picUrl'].replace('jpg', 'mp3') # 这里只是模拟音频URL构建方式,请替换为实际有效的下载链接
with open(file_path, 'wb+') as f:
mp3_file_content = requests.get(audio_url, headers=headers).content
f.write(mp3_file内容被截断了[^2]
需要注意的是,在上述代码片段中,对于每张专辑中的歌曲仅展示了前十首的下载逻辑;同时,由于官方并未提供公开可直接使用的MP3资源地址获取途径,因此这里的音频URL仅为示意性质,开发者应当寻找合适的API或遵循平台规定的方式进行操作。
阅读全文
相关推荐


















