欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Python爬取网易云音乐排行榜歌曲

Python爬取网易云音乐排行榜歌曲

2025/9/23 7:45:44 来源:https://blog.csdn.net/iku_n/article/details/141095310  浏览:    关键词:Python爬取网易云音乐排行榜歌曲

文章概述

本文将详细介绍如何使用Python编写一个简单的爬虫来抓取网易云音乐排行榜上的歌曲,并将这些歌曲下载到本地。我们将利用requests库来发送HTTP请求,并使用正则表达式来解析HTML文档,从而提取出歌曲的URL和名称。

技术栈

  • Python: 编程语言
  • requests: HTTP客户端库
  • 正则表达式: 数据解析工具

环境准备

确保安装了以下Python库:

  • requests

可通过pip安装:

pip install requests

代码详解

1. 导入库

import re
import requests

2. 设置请求参数

url = 'https://music.163.com/discover/toplist'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42','cookie': '...'  # Cookie信息
}

3. 发送请求并解析响应

reps = requests.get(url, headers=headers).text

4. 提取歌曲信息

list_url = re.findall('<li><a href="/song\?id=(.*?)">(.*?)</a></li>', reps)

5. 下载歌曲

for url in list_url:url_dj = f'http://music.163.com/song/media/outer/url?id={url[0]}.mp3'name = url[1]print(url_dj)with open('音乐//' + name + '.mp3', 'wb') as fp:fp.write(requests.get(url_dj).content)

代码分析

  1. 设置请求头:包括User-AgentCookie信息,模拟浏览器行为。
  2. 发送HTTP请求:获取排行榜页面的HTML内容。
  3. 提取歌曲信息:使用正则表达式提取歌曲的ID和名称。
  4. 构建歌曲URL:根据提取到的歌曲ID构建歌曲的下载URL。
  5. 下载歌曲:下载每首歌曲并保存到本地。

注意事项

  1. 文件夹创建:确保音乐文件夹存在,否则程序会抛出异常。
  2. 版权问题:请确保遵循相关网站的版权政策,不要用于商业用途。
  3. 异常处理:可以增加异常处理机制来增强程序的健壮性。
  4. 网络请求限制:避免频繁请求,以免被网站封禁。

运行程序

确保所需库已安装,并且音乐文件夹已创建,然后运行上述脚本即可开始抓取歌曲。

总结

通过上述代码,我们实现了一个简单的爬虫,它可以抓取网易云音乐排行榜上的歌曲并保存到本地。这种方法适用于快速抓取小规模的音频数据集。如果你需要更高级的功能或处理大量数据,可以考虑使用更复杂的技术如异步请求、多线程或多进程等。

完整代码

import reimport requestsurl = 'https://music.163.com/discover/toplist'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42','cookie': '.....'
}reps = requests.get(url, headers=headers).textlist_url = re.findall('<li><a href="/song\?id=(.*?)">(.*?)</a></li>',reps)
for url in list_url:url_dj = f'http://music.163.com/song/media/outer/url?id={url[0]}.mp3'name = url[1]print(url_dj)with open('音乐//' + name + '.mp3', 'wb')as fp:fp.write(requests.get(url_dj).content)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词