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

保存效果

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

项目环境

语言:Python3

编辑器:Pycharm

程序结构

程序主要由四部分组成:

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 上在线听。

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

python爬虫之喜马拉雅音频数据获取相关推荐

  1. Python 爬虫下载喜马拉雅音频文件

    阅读文本大概需要 5 分钟 学习,是一个长期的过程.学习的方式也是有很多种的,在家里时间有空闲时间的话可以选择读书,如今在手机上看电子书也方便.pk哥最近看电子书比较多,感觉自己的视力明显下降了.停下 ...

  2. python爬取喜马拉雅音频

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

  3. 使用python爬取喜马拉雅音频数据并保存

    ** 使用python爬取喜马拉雅音频数据并保存 ** 1.进入喜马拉雅官网,打开要爬取的项目网页,按F12=>F5后进行清空,点击项目网页中播放按钮,出现如下图点击,查找网页的url,获取到网 ...

  4. python爬虫爬取音频文件

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

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

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

  6. python爬虫公众号音频源代码_python爬取音频下载的示例代码

    抓取"xmly"鬼故事音频 import json # 在这个url,音频链接为JSON动态生成,所以用到了json模块 import requests headers = { & ...

  7. Python——爬取喜马拉雅音频(抖音最火翻唱)

    目标网站:https://www.ximalaya.com/yinyue/20248318/ 分析每一页网页url有什么不同: 第一页url:'https://www.ximalaya.com/rev ...

  8. python爬取喜马拉雅音频数据

    ''' 思路: 请求和响应的过程 多层数据解析 海量音频数据保存 https://aod.cos.tx.xmcdn.com/storages/1c5f-audiofreehighqps/DB/A3/C ...

  9. python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解

    这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...

最新文章

  1. 使用深度神经网络进行自动呼叫评分(一)
  2. CTFshow 命令执行 web47
  3. 鸿蒙生态与苹果生态有什么区别,华为想用鸿蒙统一生态,苹果直接用芯片大一统,走到华为前面?...
  4. ASP.NET之Ajax系列(三)
  5. 上传服务器响应失败,Django CKEditor 上传图片提示“不正确的服务器响应”的解决办法...
  6. Windows NT 架构
  7. Magick 使用注意
  8. 3D目标检测方案总结
  9. 剑指21.调整数组顺序使奇数位于偶数前面 python leetcode
  10. BCAST是什么意思啊
  11. 如何在游戏中设置游戏的帧率和显示帧率
  12. linux之根文件系统
  13. 阅读 | 《娱乐至死》笔记 | Part1
  14. Halcon 常用算子使用场合
  15. c语言编写“输入密码,是否登录成功的程序”
  16. 计算机硬件加速怎么开,启用硬件加速是什么 是如何进行的【详解】
  17. 计算机编程中向量,什么是节点向量
  18. WordCount程序详解
  19. 2021.5.10(cf)
  20. python实现word文档批量转成自定义格式的excel文档

热门文章

  1. 迈向企业开发Spring详解!
  2. 论文阅读:GeoTransformer
  3. APIC Timer
  4. 聚会活跃气氛小程序-喝酒神器
  5. 微核Linux(Tiny Core Linux)
  6. 机器学习数学基础——群论
  7. Java-Spring-使用篇之快速入门
  8. python实现图像的白平衡,破坏图像的白平衡(冷、暖)和调节图像的亮度
  9. BAT脚本: ping检测网络稳定性 与 取命令结果的指定行方法 与 将变量内容追加写入txt文件方法
  10. 门面设计模式(Facade Pattern)