Python爬虫实战-批量爬取下载网易云音乐
大家好,我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战https://blog.csdn.net/caoli201314/article/details/132882813
1小时掌握Python操作Mysql数据库之pymysql模块技术https://blog.csdn.net/caoli201314/article/details/133199207
一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、seleniumhttps://blog.csdn.net/caoli201314/article/details/134071440
近日锋哥又卷了一波Python实战课程-批量爬取下载网易云音乐,主要是巩固下Python爬虫基础
视频版教程:Python爬虫实战-批量爬取下载网易云音乐https://www.bilibili.com/video/BV1aw411M72B/
网易云音乐官方主页:
https://music.163.com/
比如我们打开邓紫棋的主页:
https://music.163.com/#/artist?id=7763
现在我们要爬取这里面的音乐文件,我们正常人的分析思路是这样的。
思路:1,根据歌手链接地址获取页面源码2,解析页面源码获取所有歌曲列表3,遍历,下载每首歌曲
前面两步很简单,很容易实现。
第三步,我们点 音乐列表 前面的播放按钮,当前页面底部会出现播放器,播放音乐。
谷歌 F12 进入开发者工具,点 Media 我们是可以得到音乐的源文件的。包括VIP音乐
我们要通过Python得到这个请求地址,需要进行js逆向,破解,得到js方法源代码,然后进行模拟拼接动态请求,得到音乐二进制文件,锋哥上有老,下有小,容易受到律师函,进去踩缝纫车,就不搞这种方式。
我们还是采用网易云官方提供的API接口进行获取音乐文件,包括在线播放。
网易云音乐开放接口:http://music.163.com/song/media/outer/url?id=歌曲ID (VIP音乐下载不了)
完整可运行代码如下。具体代码分析,可以看帖子开头的视频教程
"""思路:1,根据歌手链接地址获取页面源码2,解析页面源码获取所有歌曲列表3,遍历,下载每首歌曲python爬虫前置基础视频教程:http://python222.com/post/7备注:网易云音乐开放接口:http://music.163.com/song/media/outer/url?id=歌曲ID (VIP音乐下载不了)测试:https://music.163.com/#/artist?id=7763仅供学习测试
"""import requests
from bs4 import BeautifulSoupheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}# 获取用户输入的歌手链接页面
singer_url = input("请输入您要下载的歌手页面链接:")
# 格式化下载链接
url = singer_url.replace("/#", '')
response = requests.get(url=url, headers=headers)
# print(response.text)# 实例化bs4
soup = BeautifulSoup(response.text, 'lxml')# 获取歌曲列表
song_list = soup.select("ul.f-hide li a")
print(song_list)def download_song(song_name, song_id):"""下载歌曲:param song_name: 歌曲名称:param song_id: 歌曲ID:return:"""music_open_api = "http://music.163.com/song/media/outer/url?id=" + song_idmusic = requests.get(url=music_open_api, headers=headers)# 下载歌曲try:with open(f"./music/{song_name}.mp3", 'wb') as file:file.write(music.content)print(f"《{song_name}》下载成功")except:print(song_name, "下载异常")for song in song_list:# 获取歌曲名称song_name = song.text# print(song_name)# 获取歌曲IDsong_id = song['href'].split("=")[1]# 下载歌曲download_song(song_name, song_id)
相关文章:

Python爬虫实战-批量爬取下载网易云音乐
大家好,我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战https://blog.csdn.net/caoli201314/article/details/1328828131小时掌握Python操作Mysql数据库之pymysql模块技术https://blog.csdn.net/caoli201314/article/details/133199207一天掌握p…...
LeetCode 面试题 16.14. 最佳直线
文章目录 一、题目二、C# 题解 一、题目 给定一个二维平面及平面上的 N 个点列表 Points,其中第 i 个点的坐标为 Points[i][Xi,Yi]。请找出一条直线,其通过的点的数目最多。 设穿过最多点的直线所穿过的全部点编号从小到大排序的列表为 S,你仅…...

Spring Boot创建多模块项目
创建一个普通的Spring Boot项目, 然后只留下 pom.xml 剩下的都删掉 删除多余标签 标识当前为父模块 创建子模块 删除子模块中多余标签 声明父模块 在父模块中声明子模块...
Node.js、Chrome V8 引擎、非阻塞式I/O介绍
目录 Node.js介绍Chrome V8 引擎介绍非阻塞式I/O介绍 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! Node.js介绍 Node.js 是一个…...

企业服务总线ESB有什么作用?和微服务有什么区别?会如何发展?
企业服务总线ESB是什么 下面这张图,稍微了解些IT集成的朋友应该不陌生。 随着信息化发展不断深入,企业在不同的阶段引入了不同的应用、系统和软件。这些原始的应用系统互不连通,如同一根根独立的烟囱。 但是企业业务是流程化的,…...

NLP之LSTM原理剖析
文章目录 背景simpleRNN的局限性 LSTM手写一下sigmoid例子支持长记忆的神经网络解读3重门 背景 SimpleRNN有一定局限性, 图片上的文字内容: 图片标题提到“SimpleRNN是一种基础模型。它用于解决序列型问题,其中的每一步的输出会影响到下一步的结果。图…...
ESP32网络开发实例-Web方式配置WiFi连接
Web方式配置WiFi连接 文章目录 Web方式配置WiFi连接1、ESP Wi-Fi 管理器介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将介绍如何实现在Web页面中配置ESP32的WiFi连接。 1、ESP Wi-Fi 管理器介绍 ESP32 将在启动时设置为热点模式 连接到充当 AP 的 ESP32 开发板。 在连…...

ElasticSearch 批量插入漏数据
项目场景: 项目中需要把Mysql数据同步到ElasticSearch中 问题描述 数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据,本地测试也无法复现,后台程序也没有报错,一到正式环境就有问题,很崩溃 这里是批量操…...

C++——类和对象之运算符重载
运算符重载 本章思维导图: 注:本章思维导图对应的xmind文件和.png文件都已同步导入至”资源“ 文章目录 运算符重载[toc] 1. 运算符重载的意义2. 函数的声明2.1 声明运算符重载的注意事项 3. 函数的调用4. const成员函数4.1 const成员函数的声明4.2 注意…...

第二阶段第一章——面向对象
前言 学习了这么久Python(呃其实也没多久差不多两周),可能有小伙伴说我废了,两周才学这么点,咋说呢,我曾经也是急于求成,做任何事情都是急于求成,比如我喜欢一个人我就想马上跟她在…...

Linux学习第33天:Linux INPUT 子系统实验(二):Linux 自带按键驱动程序的使用
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下: -> Device Drivers ->…...

解决Visual Studio 2010 运行时屏幕一闪而过,无结果显示的问题
安装配置:Visual Studio 2010 软件安装教程(附下载链接)——计算机二级专用编程软件https://blog.csdn.net/W_Fe5/article/details/134218817?spm1001.2014.3001.5502 1、 我们在运行时会出现窗口一闪而过,这时候我们右键Test_1…...
C++(20):为[[nodiscard]]提供提示信息
C17中引入了[[nodiscard]]以对一些被忽略的函数返回值进行警告。 C(17):[[nodiscard]]编译属性_[[nodiscard]] c-CSDN博客 C20可以为[[nodiscard]]提供一个可选的提示信息 [[nodiscard("cant ignore")]] int fi() {return 1; }int main() {fi();return 0…...
hi3518ev200 从sd卡启动rootfs
板卡为 hisi 的 hi3518ev200,16M RAM,64M Flash。板卡不支持从SD卡启动,但是由于Flash空间有限,很多应用都放不下,因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel,然后再加载 SD 卡中的 rootfs…...

[BUUCTF NewStar 2023] week5 Crypto/pwn
最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…...

使用seldom编写http接口用例
在编写接口用例的过程中,针对一个接口,往往只是参数不同,那么参数化就非常有必要了。 seldom 中参数化的用法非常灵活,这里仅介绍file_data() 的N种玩法。 二维列表 当参数比较简单时可以试试下面的方式。 参数化数据 {"…...

Redis中Hash类型的命令
目录 哈希类型的命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat 内部编码 Hash类型的应用场景 作为缓存 哈希类型和关系型数据库的两点不同之处 缓存方式对比 Redis自身已经是键值对的结构了,Redis自身的键值对就…...
Java 函数式编程
1.Lambda 1.1 格式 JDK 从 1.8 版本开始支持 Lambda 表达式,通过 Lambda 表达式我们可以将一个函数作为参数传入方法中。在 JDK 1.8 之前,我们只能通过匿名表达式来完成类似的功能,但是匿名表达式比较繁琐,存在大量的模板代码&…...

类的成员函数总结
前言: 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现,编译器会生成的…...

java高级之单元测试、反射
1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法,执行在所有方法之后 3.被Before标记的方法,执行在每一个Test方法之前 4.被After标记的方法,执行在每一个Test方法之后 public …...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...

鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...