【Python实战】听书就用它了:海量资源随便听,内含几w书源,绝对精品哦~(好消息好消息)

news/2024/4/29 13:53:46/文章来源:https://blog.csdn.net/xy258009/article/details/127833902

前言

有温度 有深度 有广度 就等你来关注哦~

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

哈喽!我是栗子同学,继续更新——今天聊一聊“西马拉雅”。(谐音梗不然爬不了拉)

PS——小故事

“西马拉雅”——地球上最高大的山脉,8848 米的巅峰,几乎要碰触太空,75 座 7000 米级雪山,

俯瞰地球所有地方,平均海拔 4000 米的高原,垂直高度 5000 米的峡谷,孕育出世界上最多

样的动植物群落。搞错了,再来👇

今天讲的西马拉雅听书是一款手机听书软件,这货的好评是名不虚传的,分类明确的到了各个

领域,今天,小编就来用代码给大家扒一扒那些数据,让大家实现听书自由。

正文

一、运行环境

1)Python环境

环境: Python 3 、Pycharm、requests 、re 。re内置模块,安装 好python环境就可以了。

(win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安 装速度比较慢, 你可

以切换国内镜像源))

第三方库的安装:pip install + 模块名 或者 带镜像源 pip install -i pypi.douban.com/simple/ +模块名

2) 爬虫基本流程思路

一. 数据来源分析: 

 1. 明确需求: - 采集什么数据? 音频名字, 音频播放链接 url 

 2. 抓包分析, 分析我们想要数据内容, 它是来自于哪里 抓包分析 --> 通过浏览器<谷歌>自带工

具: 开发者工具 - 打开开发者工具: F12 或者 鼠标右键点击检查选择network - 刷新网页 ---> 

让本网页数据内容重新加载一遍 <可以看到相应的数据包> - 分析 音频播放链接 在什么地方 点

击播放 ---> media 里面就有音频播放链接:

https://aod.cos.tx.xmcdn.com/group31/M00/21/93/wKgJX1mBk5uisCN6ARUZGpfUCIk519-aacv2-48K.m4a

- 继续分析 这个 音频播放链接 是从什么地方生成的 ---> 生成数据包 通过搜索 

wKgJX1mBk5uisCN6ARUZGpfUCIk519-aacv2-48K

 找到相应数据包 音频数据包: 

https://www.ximalaya.com/revision/play/v1/audio?id=45982639&ptype=1

 通过两个音频数据包请求url地址对比 ---> 主要改变 ID 

 只要获取所有音频ID, 就可以获取所有音频播放链接 - 

通过搜索 ID 找到ID所在的地方 ---> 在什么地方可以获取到所有音频ID 

https://www.ximalaya.com/album/9723091 <音频列表页面>
目的: 获取音频播放链接 --> 音频数据包 ---> 需要传入音频ID  ---> 音频列表页面

二. 代码实现步骤: 

基本四大步骤: 发送请求, 获取数据, 解析数据, 保存数据 

 1. 发送请求, 模拟浏览器对于 音频列表页面 发送请求

https://www.ximalaya.com/album/9723091 

 2. 获取数据, 获取服务器返回响应数据 开发者工具当中所看到 response 

 3. 解析数据, 提取我们想要的数据内容 - 音频名字 - 音频ID 

 4. 发送请求, 模拟浏览器对于 音频数据包 发送请求 

https://www.ximalaya.com/revision/play/v1/audio?id=45982639&ptype=1 

 5. 获取数据, 获取服务器返回响应数据 开发者工具当中所看到 response

6. 解析数据, 提取我们想要的数据内容 - 音频url

7. 保存数据, 把数据内容保存本地。

二、代码展示

1)主程序

import requests
# 正则表达式模块 --> 内置模块 不需要安装
import re
"""
1. 发送请求, 模拟浏览器对于 音频列表页面 发送请求爬虫代码, 需要伪装一下不伪装, 可能会被反爬 --> 得不到数据, 或者得到数据不是你想要的内容
"""
# 音频列表页面
url = 'http://www.ximalaya.com/album/9723091'
# 伪装模拟 headers 请求头<字典数据类型>
headers = {# user-agent 用户代理, 表示浏览器基本身份信息'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求:
# 调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量response接受返回数据
response = requests.get(url=url, headers=headers)
# <Response [200]> response响应<>对象  200 状态码 表示请求成功
print(response)
"""
2. 获取数据, 获取服务器返回响应数据开发者工具当中所看到 response- response.text 获取响应文本数据
3. 解析数据, 提取我们想要的数据内容- 音频名字- 音频ID
正则表达式 --> re调用re模块里面findall方法 --> 找到所有, 找到所有我们想要的数据内容
re.findall('匹配什么数据', '什么地方'): 从什么地方, 去匹配什么数据- .*? 表示匹配任意字符<除了\n换行符 回车>- \d+ 表示匹配0个或者多个数字
"""
# 音频名字
titles = re.findall('"tag":0,"title":"(.*?)","playCount"', response.text)
# 音频ID
audio_id_list = re.findall('"url":"/sound/(\d+)","duration"', response.text)
# for循环遍历, 把列表里面元素一个一个提取出来
for title, audio_id in zip(titles, audio_id_list):"""4. 发送请求, 模拟浏览器对于 音频数据包 发送请求https://www.ximalaya.com/revision/play/v1/audio?id=45982639&ptype=15. 获取数据, 获取服务器返回响应数据开发者工具当中所看到 response根据开发者工具当中的response的数据显示, 可以选择不同数据获取方式"""# 字符串格式化方法 format 把 audio_id 传到 这个链接里面link = f'https://www.ximalaya.com/revision/play/v1/audio?id={audio_id}&ptype=1'# 发送请求response_1 = requests.get(url=link, headers=headers)# 获取数据 response.json() 获取响应json字典数据# print(response_1.json())"""6. 解析数据, 提取我们想要的数据内容- 音频url根据字典取值: 键值对取值, 根据冒号左边的内容[键], 提取冒号右边的内容[值]7. 保存数据"""audio_url = response_1.json()['data']['src']# 对于 音频链接 发送请求, 获取数据audio_content = requests.get(url=audio_url, headers=headers).contentwith open('data\\' + title + '.mp3', mode='wb') as f:f.write(audio_content)print(title, audio_url)

三、效果展示

1)展示效果1.

1)展示效果2.

总结

好啦!文章到这里就正式结束了哈——想我的话我们下期再见,记得三连啊哈~

✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

🔨推荐往期文章——

项目0.2 【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)

项目0.3 【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~

项目0.1 【Python抢票神器】火车票枪票软件到底靠谱吗?实测—终极攻略。

项目0.4  【Python实战】年底找工作,年后不用愁,多个工作岗位随你挑哦~

🎁文章汇总——

Python文章合集 | (入门到实战、游戏、Turtle、案例等)

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特征选择-sklearn

sklearn特征选择:移除低方差特征&#xff1a;单变量特征选择递归特征消除基于模型的SelectFromModel顺序特征选择特征选择作为pipline的一部分sklearn.feature_selection模块中的类可用于样本集的特征选择/降维&#xff0c;以提高估计器的准确性得分或提高其在非常高维的数据集…

BL200OPC UA分布式IO系统接线方式

BL200OPC UA 数据点 Node Id OPC UA 的 Node Id 默认是 NS1&#xff1b;SI/O 数据点的 Modbus 映射地址(如首个 DO 模 块第一路 DO&#xff1a;NS1&#xff1b;S1000)&#xff0c;具体 Modbus 映射地址参考 5.1.4Modbus 寄存器映射&#xff0c; 如果是自定义的 OPC UA 模型 Nod…

(02)Cartographer源码无死角解析-(19) SensorBridge→雷达点云数据预处理(函数重载)

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 …

3.35 OrCAD中怎么产生Cadence Allegro的第一方网表?OrCAD软件输出Cadence Allegro第一方网表报错时应该怎么处理?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

cpu与指令集

讨论一下 作为一个java程序员&#xff0c;我们都知道&#xff0c;当我们写完代码&#xff0c;java文件会被编译为class文件&#xff0c;然后交给jvm去执行&#xff0c;那么这个执行过程是啥样的呢&#xff1f;&#xff1f; 一般我们得到的解答都是&#xff0c;class代码会被解…

2、HTML——标题分组、居中、引用标签、水平线标签下划线标签、删除标签、<font>标签、图像标签

目录 一、基本标签 1、标题分组&#xff1a;hgroup 2、居中&#xff1a;center 3、引用标签 3.1 块&#xff08;长&#xff09;引用标签&#xff1a;blockquote 3.2 短引用标签&#xff1a;q 4、水平线标签&#xff1a;hr 5、下划线标签&#xff1a;ins 6、删除标…

【论文笔记之 BLMS】Block Implementation of Adaptive Digital Filters

本文对 GREGORY A. CLARK 于 1981 年在 IEEE Transactions on Circuits and Systems 上发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载&#xff0c;但请务必注明出处。 论文链接&#xff1a;https://ieeexplore.ieee.org/abstract/document/108…

安利几个小技巧教会你ppt如何转pdf

作为一名打工人&#xff0c;特别是办公类&#xff0c;经常是要处理大大小小的文件&#xff0c;有时候甚至要做多种文件转换。并且老板都是多变的&#xff0c;经常突然性就让你把辛苦制作一大半的PPT转成PDF格式的文件再给他。那刚入门的职场小白肯定就会选择&#xff0c;老老实…

我终于读懂了适配器模式。。。

文章目录&#x1f5fe;&#x1f306;什么是适配器模式&#xff1f;&#x1f3ef;类适配器模式&#x1f3f0;对象适配器模式⛺️接口适配器模式&#x1f3ed;适配器模式在SpringMVC 框架应用的源码剖析&#x1f5fc;适配器模式的注意事项和细节&#x1f306;什么是适配器模式&am…

自学软件测试?一般人我还是劝你算了吧...

本人7年测试经验&#xff0c;在学测试之前对电脑的认知也就只限于上个网&#xff0c;玩个办公软件。这里不能跑题&#xff0c;我为啥说&#xff1a;自学软件测试&#xff0c;一般人我还是劝你算了吧&#xff1f;因为我就是那个一般人&#xff01; 软件测试基础真的很简单&…

C# Socket

一 两个人在两个房间里打电话的图 ① 人通过【电话】可以通信&#xff1b; ② 程序通过【Socket】来通信&#xff1b; ③ *套接字 就是 程序间的电话机&#xff1b; ④ 我和孙权打电话 电话 规定好的语言&#xff1b; ⑤ 电脑和电话进行联系 协议&#xff1b; 二 Socket相关…

JVM(二十三)—— 垃圾回收器(三)G1垃圾回收器

G1垃圾回收器:区域化分代式G1概述G1的特点&#xff08;优势&#xff09;G1的缺点G1的参数设置G1的适用场景分区region&#xff1a;化整为零记忆集和写屏障G1回收器垃圾回收过程年轻代GC并发标记过程混合回收G1概述 应用程序所应对的业务越来越庞大&#xff0c;复杂&#xff0c…

【大数据】flink 读取文件数据写入ElasticSearch

前言 es是大数据存储的必备中间件之一&#xff0c;通过flink可以读取来自日志文件&#xff0c;kafka等外部数据源的数据&#xff0c;然后写入到es中&#xff0c;本篇将通过实例演示下完整的操作过程&#xff1b; 一、前置准备 1、提前搭建并开启es服务&#xff08;本文使用doc…

图像分割 - Hough变换直线检测

目录 1. Hough 直线检测 2. HoughLinesP 函数 1. Hough 直线检测 霍夫变换&#xff08;Hough 变换&#xff09;&#xff1a;利用对偶原理&#xff0c;把原空间的问题转换到对偶空间去求解 这里涉及到空间转换&#xff0c;将原来的笛卡尔空间&#xff08;xy空间&#xff09;…

App安全架构之前端安全防护

近年来&#xff0c;随着互联网、物联网、移动设备、5G通讯等技术的齐头发展&#xff0c;人类的生活和工作越来越离不开软件和互联网&#xff0c;正如人类社会文明发展到一定程度以后&#xff0c;会需要法律等社会规范来保护一样&#xff0c;线上环境也是一样道理。 Gartner 对…

Python学习小组课程-课程大纲与Python开发环境安装

一、前言 注意&#xff1a;此为内部小组学习资料&#xff0c;非售卖品&#xff0c;仅供学习参考。 为提升项目落地的逻辑思维能力&#xff0c;以及通过自我创造工具来提升工作效率&#xff0c;特成立Python学习小组。计划每周花一个小时进行在线会议直播学习&#xff0c;面向…

国内访问Github超级慢?那是你没有用我这个脚本。直接起飞。

导语 之前很多朋友咨询过国内访问Github较慢的问题&#xff0c;然后我一般让他们自己去知乎上找攻略&#xff0c;但今天我才发现网上竟然没有一个一键配置的脚本&#xff0c;一般都需要我们跟着教程一步步地去做才行。这也太麻烦了&#xff0c;于是自己动手写了个脚本&#xf…

ceph浅谈

总谈 ceph简介 用上ceph&#xff0c;多台机器的磁盘空间在一起了&#xff0c;在一台机器上就可以看到使用所有空间。 还可以保存多份安全备份 存储先ceph&#xff0c;自我管理修复&#xff0c;跨机房&#xff0c;节点越多&#xff0c;并行化&#xff0c;论上&#xff0c;节点越…

1-(3-磺酸基)丙基-1-甲基-2-吡咯烷酮三氟甲磺酸盐[C3SO3Hnmp]CF3SO3

1-(3-磺酸基)丙基-1-甲基-2-吡咯烷酮三氟甲磺酸盐[C3SO3Hnmp]CF3SO3 离子液体(IonicLiquids)是完全由离子组成&#xff0c;现在多指在低于100摄氏度时呈液体状态的熔盐。通常由特定的有机阳离子和无机阴离子&#xff08;或有机阴离子&#xff09;构成。 离子液体特点 蒸汽压…

C++基础——模板讲解

目录 一. 泛型编程 二. 函数模板 1.格式&#xff1a; 2.定义&#xff1a; 1.隐式实例化 2.显式实例化 3.解决方法3&#xff1a;使用多个T类型 4.在C中编译器允许非模板函数和模板函数同时存在 一. 泛型编程 先来看一段代码&#xff1a; void Swap(int& p1, int&am…