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

news2024/11/15 21:44:04


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭
~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:Python
欢迎访问我的主页:Srlua 获取更多信息和资源。✨✨🌙🌙

目录

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

request模块安装下载

win平台安装

如何查看是否安装成功?

pycharm中安装

成功爬取网易云的源代码

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

实现批量下载

文件创建

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

运行程序

爬取ing

自动下载至路径文件夹

如何爬取其他榜单?

切换榜单id,爬取成功!

完整代码


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)
​

希望对你有帮助!加油!

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学学习与研究杂志社《数学学习与研究》杂志社编辑部2023年第29期目录

考试研究 提高高三数学二轮复习质量的思考与实践 佘淮青; 2-4 提升高三数学复习质量的策略探究 王飞; 5-7 核心素养背景下的高中数学命题策略研究 陈明发; 8-10 提升中考数学复习课的有效性研讨 韩兴宏; 11-13 中学教学方法《数学学习与研究》投稿&#xff1a;…

React入门之React_渲染基础用法和class实例写法

渲染元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>04元素渲染</title><script src&…

迟到的VNCTF2024逆向题WP

这次比赛因为有事外出&#xff0c;只做了前两题&#xff0c;最近有空才把另外3题也做出来&#xff0c;总体来说比以往的VNCTF逆向题目要难一些。当然也有可能是我水平退步了&#xff0c;就算有时间参加比赛&#xff0c;应该也做不完这5题。VN的小伙伴越来越厉害了&#xff0c;出…

Python + Google AI 自动修复 Sonar Bug 实践

前言 在工作中总会遇到种种不期而至的需求&#xff0c;比如前段时间突然要修复所有 Sonar Bug&#xff0c;涉及各种琐碎的代码风格问题&#xff0c;包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了&#xff0c;Sonar 上的问题层出不穷&#xff0c;各种…

汽车三元催化器的废品项目详解,三元催化再生项目的回收技术教学

一、教程描述 这是一个收废品项目&#xff0c;就收那些别人不懂的&#xff0c;三元催化器的附加值高&#xff0c;只要掌握技术&#xff0c;怎么玩都行的&#xff0c;只是要放得下你的面子。三元催化器&#xff0c;是安装在汽车排气系统中最重要的机外净化装置&#xff0c;它可…

Python 神经概率语言模型代码实现和详解,NPLM代码实现和详解;NPLM代码模板讲解,最简单的NLP预测模型

1.神经概率语言模型&#xff1a;NPLM NPLM&#xff08;Neural Probabilistic Language Model&#xff09;是一种经典的神经概率语言模型&#xff0c;被用于自然语言处理任务中。它使用神经网络来学习词汇之间的关系&#xff0c;通过计算词汇序列的概率分布来预测下一个词汇。N…

论文设计任务书学习文档|基于Web的个性化简历职位推荐系统的设计与实现

文章目录 论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Web的个性化简历职位推荐系统的设计与实现 1、论文(设计)的主要任务及目标…

log4j 基础使用入门教程

一、Log4j介绍 在项目中&#xff0c;不管是开发人员写代码还是测试人员写的测试代码一般都需要做一些日志来记录项目的行为&#xff0c;以便更好的跟踪项目中的一些交互和问题。 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目…

理解C转汇编后代码分析

题目 . - 力扣&#xff08;LeetCode&#xff09; 解题代码 #include <stdio.h> #include "stdbool.h"typedef struct {int score;int index;int count; } Record; Record records[26] {0};int totalScore(char *w) {int total 0;for (int i 0; i < st…

程序员的金三银四/金九银十求职宝典

目录 金三银四&#xff0c;金九银十 方向一&#xff1a;面试技巧分享 方向二&#xff1a;面试题解析 方向三&#xff1a;公司文化解读 方向四&#xff1a;职业规划建议 方向五&#xff1a;成功案例展示 方向六&#xff1a;行业趋势分析 金三银四&#xff0c;金九银十 “金…

Docker制作lamp镜像并在其他机器上部署

为了方便将自己的LAMP运行环境和项目在其他机器上部署或发布&#xff0c;可以用基于Dockerhub 里的mattrayner/lamp镜像打包自己需要的镜像。 1、先选择合适的镜像文件 镜像mattrayner/lamp有多个版本&#xff0c;根据自己需要选择下载 2、镜像在首次运行时会自动下载&#x…

vue3 图片/视频 加载失败重试

vue3 图片/视频 加载失败重试 需求背景 用户手机上传图片走oss &#xff0c;在pc端在线客服连接socket 需要实时推送消息&#xff0c;接受到消息后&#xff0c;由于oss还回没有回调成功&#xff0c;所以图片/视频不能及时展示&#xff0c;所以做了一个失败重试的功能 效果图 技…

QQ录屏会录到外界声音吗?这篇文章告诉你答案

在现代网络科技快速发展的今天&#xff0c;屏幕录制已成为人们日常办公、学习、娱乐的重要工具。qq作为国内最受欢迎的社交软件之一&#xff0c;其内置的屏幕录制功能受到很多人的青睐。可是使用的过程中&#xff0c;很多人会有疑问&#xff1a;qq录屏会录到外界声音吗&#xf…

Python编程实验五:文件的读写操作

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 四、实验结果分析与体会 一、实验目的与要求 &#xff08;1&#xff09;通过本次实验&#xff0c;学生应掌握与文件打开、关闭相关的函数&#xff0c;以及与读写操作相关的常用方法的…

Constructor构造方法

在我们创建实例时&#xff0c;我们经常需要同时初始化这个实例&#xff0c;例如&#xff1a; Person ming new Person(); ming.setName("卫什么"); ming.setAge("18"); 这样需要三行代码&#xff0c;实际上&#xff0c;在我们创建实例时&#xff0c;是通过…

高校物品捐赠管理系统|基于springboot高校物品捐赠管理系统设计与实现(源码+数据库+文档)

高校物品捐赠管理系统目录 目录 基于springboot高校物品捐赠管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、捐赠信息管理 3、论坛信息管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算…

端智能:面向手机计算环境的端云协同AI技术创新

近年来&#xff0c;随着移动端设备软硬件能力的进步&#xff0c;移动端的算力有了很大提升&#xff0c;同时面向移动端的机器学习框架和模型轻量化技术越来越成熟&#xff0c;端上的AI能力逐渐进入大众视野&#xff0c;端智能在电商领域也开始逐步走向规模化应用。通过持续探索…

【X806开发板试用】文章一 ubuntu开发环境搭建

一、环境配置 官方链接&#xff1a; 环境配置 1.安装必要的库和软件 sudo apt-get install build-essential gcc g make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-b…

幻兽帕鲁(1.5.0)可视化管理工具(0.5.7 docker版)安装教程

文章目录 局域网帕鲁服务器部署教程帕鲁服务可视化工具安装配置服务器地址&#xff08;可跳过&#xff09;使用工具管理面板 1.5.0服务端RCON错误1.5.0服务端无法启动RCON端口 解决方法第一步&#xff1a;PalWorldSettings.ini配置第二步&#xff1a;修改PalServer.sh配置 局域…

Zookeeper基础入门-1【集群搭建】

Zookeeper基础入门-1【集群搭建】 一、Zookeeper 入门1.1.概述1.2.Zookeeper工作机制1.3.Zookeeper特点1.4.数据结构1.5.应用场景1.5.1.统一命名服务1.5.2.统一配置管理1.5.3.统一集群管理1.5.4.服务器动态上下线1.5.5.软负载均衡 1.6.Zookeeper官网1.6.1.Zookeeper下载1.6.2.历…