基本开发环境????Python 3.6

Pycharm

相关模块的使用????import requests

import os

安装Python并添加到环境变量,pip安装需要的相关模块即可。

一、????明确目标

爬取免费的播放量最多的有声书,如果你想要爬取付费的也是可以,那你得先开一个会员,

爬虫是看的到才能爬。

二、????网页数据分析

点击任意一个音频章节点击播放。在开发者工具中选择 Media 会加载出一个数据

复制这个链接会自动下载一个可播放的音频文件。

听内容是和网站上面的有声小说是一样的。所以这个就是音频数据的真实url地址。

接下来就要分析找到这个数据来源。

在开发者工具中搜索 wKgJJ1eKo-3xGS0KAFIc8J_87NE024 框选的内容就是音频本身,所有查看第一个地址。

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

这个数据里面包含了音频地址。

其实这个 id=18556416 就是每个音频的ID值了。同样的在开发者工具中进行搜索。

有声书名字,音频ID,章节名字都有了。但是当我查看第二页数据的时候发现,并不是这个链接,而是另外一个链接。https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=4756811&pageNum=2

还是有一些区别的,所以我们应该请求的是第二个链接

???? 整体思路分析1、通过 'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=4756811&pageNum=2'

url地址获取每章音频的ID以及章节名字

2、通过 'https://www.ximalaya.com/revision/play/v1/audio?id=18556416&ptype=1' url地址获取

每章音频的下载地址

3、请求音频地址,进行本地保存

三、????代码实现

1、获取获取每章音频的ID以及章节名字def get_audio_info(html_url):

json_data = get_response(html_url).json()

audio_info = json_data['data']['tracks']

for index in audio_info:

# 音频ID

audio_id = index['trackId']

# 章节名字

audio_title = index['title']

# 有声书小说名字 《摸金天师》第001章 百辟刀

audio_name = audio_title.split('第')[0]

2、获取音频urldef get_audio_url(audio_id):

page_url = f'https://www.ximalaya.com/revision/play/v1/audio?id={audio_id}&ptype=1'

json_data = get_response(page_url).json()

audio_url = json_data['data']['src']

return audio_url

3、保存音频def save(name, title, audio_url):

path = f'{name}\\'

if not os.path.exists(path):

os.makedirs(path)

audio_content = get_response(audio_url).content

with open(path + title + '.m4a', mode='wb') as f:

f.write(audio_content)

print('正在保存:', title)

????完整实现代码import requests

import os

def get_response(html_url):

header = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'

}

response = requests.get(url=html_url, headers=header)

return response

def save(name, title, audio_url):

path = f'{name}\\'

if not os.path.exists(path):

os.makedirs(path)

audio_content = get_response(audio_url).content

with open(path + title + '.m4a', mode='wb') as f:

f.write(audio_content)

print('正在保存:', title)

def get_audio_url(audio_id):

page_url = f'https://www.ximalaya.com/revision/play/v1/audio?id={audio_id}&ptype=1'

json_data = get_response(page_url).json()

audio_url = json_data['data']['src']

return audio_url

def get_audio_info(html_url):

json_data = get_response(html_url).json()

audio_info = json_data['data']['tracks']

for index in audio_info:

# 音频ID

audio_id = index['trackId']

# 章节名字

audio_title = index['title']

# 有声书小说名字 《摸金天师》第001章 百辟刀

audio_name = audio_title.split('第')[0]

audio_url = get_audio_url(audio_id)

save(audio_name, audio_title, audio_url)

if __name__ == '__main__':

for page in range(1, 39):

url = f'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=4756811&pageNum={page}'

get_audio_info(url)

python 喜马拉雅_Python爬虫入门教程14:喜马拉雅有声书音频爬取相关推荐

  1. python爬虫知乎图片_Python爬虫入门教程 25-100 知乎文章图片爬取器之一

    1. 知乎文章图片爬取器之一写在前面 今天开始尝试爬取一下知乎,看一下这个网站都有什么好玩的内容可以爬取到,可能断断续续会写几篇文章,今天首先爬取最简单的,单一文章的所有回答,爬取这个没有什么难度. ...

  2. python爬图片代码大全_爬虫入门教程⑩— 用漂亮的图表展示爬取到的数据

    经过了前面的努力,我们成功获取到了数据,并且学会了保存,但是只是用网页展示出来,是不是有一些不够美观呢? 所以本节的内容是:数据的可视化.拿到了数据却不能使其简单易懂并且足够突出,那就是不是好的数据工 ...

  3. python爬虫多线程书籍_Python爬虫入门【10】:电子书多线程爬取

    最近想找几本电子书看看,就翻啊翻,然后呢,找到了一个 叫做 周读的网站 ,网站特别好,简单清爽,书籍很多,而且打开都是百度网盘可以直接下载,更新速度也还可以,于是乎,我给爬了.本篇文章学习即可,这么好 ...

  4. Python爬虫入门教程 3-100 美空网数据爬取 1

    1.美空网数据-简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  5. python爬取方式_Python 爬虫入门(三)—— 寻找合适的爬取策略

    写爬虫之前,首先要明确爬取的数据.然后,思考从哪些地方可以获取这些数据.下面以一个实际案例来说明,怎么寻找一个好的爬虫策略.(代码仅供学习交流,切勿用作商业或其他有害行为) 1).方式一:直接爬取网站 ...

  6. Python爬虫入门教程 14-100 All IT eBooks多线程爬取

    All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...

  7. Python爬虫入门教程 3-100 美空网数据爬取

    1.美空网数据-简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  8. Python爬虫入门教程14:喜马拉雅有声书音频爬取

    基本开发环境

  9. python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取

    1. CSDN学院课程数据-写在前面 今天又要抓取一个网站了,选择恐惧症使得我不知道该拿谁下手,找来找去,算了,还是抓取CSDN学院吧,CSDN学院的网站为 https://edu.csdn.net/ ...

最新文章

  1. ida 反编译 linux bin,使用IDA pro逆向ARM M系核心的Bin固件
  2. GDCM:gdcm::SplitMosaicFilter的测试程序
  3. 学习手机游戏原画设计需要多长时间?难学吗?
  4. 商品评价 - 信息脱敏
  5. jsf集成spring_JSF 2,PrimeFaces 3,Spring 3和Hibernate 4集成项目
  6. leetcode614. 二级关注者(SQL)
  7. java使用http代理访问服务器
  8. python-flask-Flask-SQLAlchemy与Flask-Migrate联合进行数据化迁移
  9. java容易搞混的技术_Java中比较容易混淆的知识点
  10. 【转】R语言处理大规模数据集的编程要点
  11. python与java前景-数据告诉你,Python、Java、C+哪个更有发展前途?
  12. java后端技术有哪些_Java后端精选技术:什么是JVM?
  13. 佳博打印机如何设置热敏打印
  14. JS 字符串分割以及填充
  15. 简单的php表单制作
  16. (一)计网五层模型概述
  17. 洛谷P1357 花园(状态压缩+矩阵快速幂)
  18. 【大家说英语】Work Rob Gives a Speech
  19. 关于length与length()
  20. 【Proteus+51单片机学习笔记】-51/52系列单片机简介

热门文章

  1. 以亲身经历浅谈软件实现前“凡事三问”的重要性---欢迎大家分享自己的经历和感悟!
  2. prometheus的介绍及安装
  3. java捕获sybase主键重复异常_sybase错误码
  4. python 爬取电子书_看kindle网站电子书用Python爬取下载
  5. 中国手机地图用户超7千万 LBS开启掌上世界
  6. java背单词软件_图灵单词王手机背单词软件大学版 For JAVA
  7. 成为优秀的UI设计师你需要具备这些能力!
  8. coos.$script 动态插入脚本并执行的方法
  9. Azure基础:什么是Azure 区域、可用性区域和区域对(14)
  10. 2021 前端面试(杭州)