Python项目实战案例-批量下载网易云榜单音乐保存至本地

简介: Python项目实战案例-批量下载网易云榜单音乐保存至本地



Python项目实战案例-批量下载网易云榜单音乐

request模块安装下载

win平台安装

Win平台: “以管理员身份运行”cmd,执行pip install requests

如何查看是否安装成功?

查看以上截图会显示Successfully installed...,即表示安装成功。

也可以在Win平台: “以管理员身份运行”cmd,执行pip list,查看到以下截图显示requests,即表示安装成功。

pycharm中安装

如果不行的话,也可以通过pycharm中的提示,安装install request packages

首先,我们进入网易云音乐官网 ,选择需要爬取的音乐榜单

这里博主选择热歌榜

想要爬取这些歌曲的话,我们需要获取它的音乐名字和它的音乐id

右击网页页面选择检查进入开发者模式,或者通过按键盘上的F12进入

然后我们control+r刷新页面

选择标头(headers)获取请求url的内容

把request header里的User-Agent:复制到header中

User-Agent:就是我们浏览器的基本信息

成功爬取网易云的源代码

使用Python中的requests库发送一个GET请求,并获取指定URL的网页源代码。

response = requests.get(url=url, headers=headers)
print(response.text)获取网页源代码

查看搜索控制台的内容

结合正则表达式查询

'<li><a href="/song\?id=(\d+)">(.*?)</a>'

这是一个正则表达式,用于匹配HTML中的特定模式。具体来说,它匹配的是一个<li>标签内的<a>标签,其中<a>标签的href属性以"/song?id="开头,后面跟着一串数字(由\d+表示),然后是">"和任意字符(由(.*?)表示),最后是闭合的</a>标签。

这个正则表达式可以用于从HTML中提取歌曲链接和歌曲名称。例如,如果有一个HTML字符串如下:

<ul>
  <li><a href="/song?id=123">歌曲1</a></li>
  <li><a href="/song?id=456">歌曲2</a></li>
</ul>

使用这个正则表达式进行匹配,可以得到两个结果:

  1. /song?id=123歌曲1
  2. /song?id=456歌曲2

提取出榜单的音乐id和音乐名称

使用正则表达式从HTML文本中提取歌曲的ID和标题。

首先,使用re.findall()函数来查找所有匹配的字符串。

正则表达式<li><a href="/song\?id=(\d+)">(.*?)</a>用于匹配以<li><a href="/song?id=开头,后面跟着一串数字(由\d+表示),然后是">和任意字符(由(.*?)表示),最后是闭合的</a></li>标签。

在每次循环中,num_id变量存储歌曲的ID,title变量存储歌曲的标题。然后,通过print()函数将它们打印出来。

实现批量下载

成功获取id和名称之后,我们就可以准备进行下载的部分了

尝试调用接口播放

成功播放

music_url = f'http://music.163.com/song/media/outer/url?id={num_id}.mp3'  
# 对于音乐播放地址发送请求 获取二进制数据内容   
music_content = requests.get(url=music_url, headers=headers).content   
with open(filename +title +'.mp3', mode='wb') as f:        
    f.write(music_content)

这段代码用于下载歌曲的MP3文件。

首先,它使用f-string将歌曲ID插入到音乐URL中,生成完整的音乐播放地址。

然后,通过requests.get()函数发送请求获取二进制数据内容。

最后,使用open()函数以写入二进制模式打开一个文件,并将音乐内容写入该文件中。文件名由filenametitle拼接而成,并以.mp3作为扩展名。

文件创建

手动创建 / os模块自动创建

博主这里选择用os模块创建

运行程序

爬取ing

自动下载至路径文件夹

如何爬取其他榜单?

如果想要爬取其他的榜单的歌曲内容,只要更改请求url中的id

切换榜单id,爬取成功!

完整代码

import requests  # 数据请求模块 第三方模块 pip install requests
import re  # 正则表达式模块 内置模块 不需要安装
import os  # 文件操作模块
filename = 'music\\'
if not os.path.exists(filename): # 如果没有这个文件夹则自动创建
    os.mkdir(filename)
# 如果想要爬取其他的榜单的歌曲内容,只要更改请求url中的id
url = 'https://music.163.com/discover/toplist?id=3778678'
# headers请求头 就是用伪装python代码的 把python代码伪装成浏览器对于服务器发送请求
# 服务器接收到请求之后,会给我们返回响应数据(response)
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'
}
response = requests.get(url=url, headers=headers)
#print(response.text)获取网页源代码
# 正则表达式提取出来的一个内容 返回是列表 里面每一个元素都是元组
html_data = re.findall('<li><a href="/song\?id=(\d+)">(.*?)</a>',response.text)
for num_id, title in html_data:
   # http://music.163.com/song/media/outer/url?id=436346833.mp3
   music_url = f'http://music.163.com/song/media/outer/url?id={num_id}.mp3'
   # 对于音乐播放地址发送请求 获取二进制数据内容
   music_content = requests.get(url=music_url, headers=headers).content
   with open(filename +title +'.mp3', mode='wb') as f:
        f.write(music_content)
   print(num_id, title)

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

目录
相关文章
|
5月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
6月前
|
机器学习/深度学习 搜索推荐 数据可视化
基于python大数据的音乐可视化与推荐系统
本研究基于Python实现音乐数据采集、清洗、分析与可视化,并结合协同过滤算法构建个性化推荐系统。通过Echarts展示音乐热度及用户偏好,提升用户体验,助力音乐产业智能化发展。
|
10月前
|
数据采集 存储 Web App开发
逆向音乐APP:Python爬虫获取音乐榜单
逆向音乐APP:Python爬虫获取音乐榜单
652 58
|
6月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
433 0
|
8月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
9月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
380 0
Python 3D数据可视化:7个实用案例助你快速上手
|
搜索推荐 算法 程序员
6个案例15分钟让你了解Python套路
Python以其简洁易读的语法,成为编程初学者的首选。本文通过7个经典代码案例,带你快速了解Python编程的核心概念和常用技巧: 1. **九九乘法口诀**:使用嵌套循环打印乘法表。 2. **列表求和**:展示两种方法(for循环和内置函数sum())计算列表元素之和。 3. **素数判断**:编写函数判断一个数是否为素数。 4. **斐波那契数列**:生成指定长度的斐波那契数列。 5. **冒泡排序**:实现简单的冒泡排序算法。 6. **汉诺塔问题**:通过递归解决经典的汉诺塔问题。 这些案例不仅展示了Python的基础语法,更体现了编程思维的重要性,帮助初学者逐步掌握编程套路。
368 2
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
Python
Python之音乐专辑管理系统
音乐专辑管理系统是一款用于管理和维护音乐专辑信息的应用程序,支持添加、删除、修改和查询专辑详情(如专辑名、艺术家、发行日期及曲目列表)。系统运行需Python 3.x环境,硬件要求较低,适合个人及小型团队使用。
302 4

热门文章

最新文章

推荐镜像

更多