1. 项目背景与需求分析
最近在做一个音乐数据分析项目,需要获取网易云音乐的排行榜数据。作为国内主流音乐平台之一,网易云音乐拥有丰富的歌曲资源和用户行为数据,特别是其各类排行榜(如飙升榜、新歌榜、原创榜等)能直观反映当前音乐流行趋势。但官方并未提供完整的API接口,这就需要用爬虫技术来自动化获取这些数据。
我调研了市面上常见的几种方案:
- 官方API(部分功能受限)
- 第三方封装库(如NeteaseCloudMusicApi)
- 直接爬取网页端
- 分析移动端接口
最终选择直接爬取网页端接口,主要考虑以下几点:
- 官方API对排行榜数据支持有限
- 网页端接口相对稳定
- 不需要处理复杂的加密参数
- 数据格式较为规范(JSON)
注意:爬取数据请遵守网易云音乐的用户协议,不要高频请求影响服务器正常运行,本文仅用于技术学习交流。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与环境准备
2.1 核心工具链
python复制# 主要依赖库
import requests # 网络请求
from bs4 import BeautifulSoup # HTML解析
import json # 数据处理
import pandas as pd # 数据存储
选择Python作为开发语言,主要因为:
- 丰富的爬虫生态(Requests、BeautifulSoup等)
- 数据处理方便(Pandas、NumPy)
- 调试便捷(Jupyter Notebook)
2.2 接口分析
通过浏览器开发者工具分析,发现网易云音乐排行榜数据是通过异步接口获取的:
code复制https://music.163.com/discover/toplist?id=3778678 # 热歌榜
https://music.163.com/discover/toplist?id=3779629 # 新歌榜
关键观察:
- 每个榜单有唯一ID
- 数据通过XHR加载
- 实际数据接口隐藏在页面JS中
2.3 请求头配置
为避免被识别为爬虫,需要设置合理的请求头:
python复制headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64
