阅读文本大概需要 5 分钟

学习,是一个长期的过程。学习的方式也是有很多种的,在家里时间有空闲时间的话可以选择读书,如今在手机上看电子书也方便。pk哥最近看电子书比较多,感觉自己的视力明显下降了。停下来不学习又不行,我想到用听的方式去学习,如今各平台上音频文件还是比较丰富的。大家听得比较多的应该就是喜马拉雅这个平台了。今天我用 Python 把喜马拉雅的音频通过输入关键字查询出来并下载保存在本地。

保存效果

我通过「腾讯传」关键字查询出 6 个音频专辑,以下为其中一个专辑里的 7 个音频文件。

项目环境

语言:Python3

程序结构

程序主要由四部分组成:

  • gethtml():提取页面 html 信息。

  • getid():获取通过关键字搜索的音频专辑 ID 列表。

  • downm4a():下载对应专辑 ID 下的音频文件。

  • mkdir():把下载的音频保存到相应的文件夹中。

页面分析

我们要下载音频文件,首先我们得要找到下载音频的 url,我们打开浏览器自带的调试工具(我用的是 Chrome),通过快捷键 F12 可快速打开调试工具。调试器切到 Network,我以我最近刚看完的「腾讯传」为例,点击专辑封面中间的播放按钮,该专辑中音频信息中都在 json 格式的数据中。一共有 7 个音频文件。

任意展开一个音频的详细信息,详细信息包括了音频文件的标题和下载链接。找到了音频的下载链接就可以下载音频了,接下来的工作的都围绕怎么获取音频文件的下载链接展开。

获取页面源码

我们先定义一个获取页面 html 信息的函数。该函数中加入浏览器表头信息 headers,为了安全起见,用的是代理 IP,有兴趣的可以自己做个 IP 代理池,IP 失效后自动替换。

获取专辑信息

接下来我们需要获取专辑的 ID,因为音频的下载链接是通过专辑 ID 拼接的,我们看下刚才包含音频文件名称和下载链接信息的 Headers,可看到专辑链接的组成中 albumId 就是专辑 ID,后面的表示当前页面数和页面最多存放的音频数。

专辑的 ID 信息包含在通过关键字搜索的信息里面。

通过 BeautifulSoup 在页面中提取专辑的 ID 信息,顺便也把专辑标题信息提取出来,当做等下创建专辑目录的名称,主要代码如下。

获取页面数

上面的方法获取专辑 ID 信息,接下来我们需要知道专辑下共用多少页的音频文件,我们通过音频总数除以 30 来获取页面数量。音频总数的信息在音频文件列表的 data 里面,下图我用了音频文件数量比较多「明朝那些事儿」举例,一共 268 个音频文件。

有了音频总数,每页的音频数量是 30 个,这样我们就可以算出页面的数量了,分为 3 种情况判断:总数小于或等于 30 个、总数大于 30 个且是 30 的倍数、总数大于 30 个且不是 30 的倍数,相关代码如下。

下载音频文件

专辑 ID、专辑名称、页面数量都有了,接下来就可以下载音频文件了。下载音频时,当音频不足 30 个,需要做下异常处理。当音频文件是付费文件时,无法下载。这时做一个判断,音频的下载链接为 null 或者 None 时,跳出循环去爬取下一个专辑的文件。

音频的下载链接为 null 或者 None 的情况,这里以「明朝那些事儿」为例,通过「明朝那些事儿」关键字爬取的其中一个专辑的音频文件,总共只爬取了 50 个,后面的音频文件都没有提供下载链接,所以无法下载。

建立目录存放音频

为了让下载下来的音频文件有序的存放在以专辑名称命名的文件夹下,我们用代码自动创建目录并把对应文件下载到该目录下。

后记

本文的目的是把喜马拉雅上免费的音频下载到本地,传到手机里,方面大家保护视力的情况下随时都可以学习。当然,流量充足的也可以在 APP 上在线听。

此项目是通过输入关键字去搜索音频专辑下载的,对于有些关键字没有对应音频的情况下,系统会把推荐音频给你,所以为了提高大家的效率,大家运行代码前,先在喜马拉雅网站输入你需要搜索的关键字,看是否有相关的音频,有的话再运行代码。一般热度比较高的音频专辑都比较靠前,下载了自己需要的音频专辑后,如果后面的专辑不需要停止运行代码即可。

源码可在公众号回复「听」获取。

推荐阅读:

人必有痴,而后有成

Python 爬虫下载喜马拉雅音频文件相关推荐

  1. Python实例---爬取下载喜马拉雅音频文件

    PyCharm下python爬虫准备 打开pycharm 点击设置 点击项目解释器,再点击右边+号 搜索相关库并添加,例如:requests 喜马拉雅全网递归下载 打开谷歌/火狐浏览器,按F12打开开 ...

  2. python爬虫之喜马拉雅音频数据获取

    学习,是一个长期的过程.学习的方式也是有很多种的,在家里时间有空闲时间的话可以选择读书,如今在手机上看电子书也方便.最近看电子书比较多,感觉自己的视力明显下降了.停下来不学习又不行,我想到用听的方式去 ...

  3. python爬虫爬取音频文件

    python爬取喜马拉雅FM音频文件一说春秋 (https://www.ximalaya.com/lishi/4164479/)这是从喜马拉雅网站随便找的一个 此时打开开发者选项,点开network查 ...

  4. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  5. 使用Python爬虫示例-自动下载网页音频文件

    使用Python爬虫示例-自动下载网页音频文件 使用库 目标网站 获取并解析网页源代码 访问下载链接 使用库 requests 用来发送http请求. BeautifulSoup 一个灵活又方便的网页 ...

  6. python 喜马拉雅_【Python爬虫】喜马拉雅FM听书,陶冶情操,走向成功!-音频爬取,仅提供思路。...

    [Python] 纯文本查看 复制代码# -*- coding : 'UTF-8' -*- # 喜马拉雅FM听书下载 # Author :XSX # https://www.ximalaya.com/ ...

  7. 用python 对蜻蜓fm下载的音频文件进行批量还原文件名

    对蜻蜓fm下载的音频文件进行批量还原文件名 小孩爱听蜻蜓fm的故事,可是懒得老买会员(囊中羞涩).干脆就想把音频文件下载回来慢慢听. 蜻蜓fm的安卓app可以下载音频文件保存到本地电脑里,便于临时会员 ...

  8. python爬取喜马拉雅音频

    python爬取喜马拉雅音频 爬虫框架的三个基本组成:获取网页,寻找信息,收集信息. ## 分析网页获取音频资源的url打开网页https://www.ximalaya.com/youshengshu ...

  9. python 爬虫下载网易歌单歌曲

    python 爬虫下载网易歌单歌曲 可以根据歌单 id 来下载歌单中的所有音乐,付费音乐除外 可以自己输入歌单 id 来进行单个歌单下载,也可以结合上一篇文章 爬取网易云音乐所有歌单信息 先取到所有的 ...

最新文章

  1. jenkins添加git源码目录时报Error performing command错误
  2. create-react-app 2.0中使用antd(eject)
  3. react+webpack项目常用的插件(plugins)
  4. 微信从原版到现在所有界面图片_微信突然宣布:现在能改微信号了,所有人都能改...
  5. Python turtle库实现基本剖析
  6. 前端学习(2478):请求提交
  7. Linux中的Docker容器的数据卷
  8. 手把手带你深入解析静态分派 动态分派原理 | 原力计划
  9. SNIP物体检测算法理解
  10. java代码实现注册发送邮件激活账户
  11. Python原来有三大神器
  12. python 列表推导式 else_列表推导式与表达式生成器在 Python 中的滥用!
  13. 解决ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
  14. mysql数据库转postgres数据库语法不通错误方言
  15. 圣手键盘如何识别微软输入法的大小写状态?声音提示法
  16. 计算机开机无法选择用户界面,带有win10双系统中win10关机后开机无法进入启动菜单选择及BIOS界面的原因你知道吗?...
  17. 利用计算机进行会计造假的案例分析,账簿会计造假的形式和识别技巧
  18. Java加密算法—非对称加密
  19. 100集华为HCIE安全培训视频教材整理 | 源NAT技术
  20. 北京花香满径计算机技术有限公司,花香满径

热门文章

  1. OSChina 周日乱弹 —— 进入读图时代
  2. 呼叫中心和电话营销系统相关知识--中继线路
  3. tableau用数据分组_对数据进行分组
  4. 简记_插件电阻功率选型及使用注意事项
  5. android蓝牙查看电池容量_Android查看电池电量的方法(基于BroadcastReceiver)
  6. 免费开源的几款Web服务器软件简介
  7. M480 EMAC驱动02-IP101G测试
  8. 手把手的教你安装PyCharm --Pycharm安装详细教程(一)(非常详细,非常....)
  9. 东芝推出具备限流器检测功能的有刷直流电机驱动器IC
  10. 新年最美表白烟花-祝大家新年快乐,表白成功