网页音频抓取(页面分析我们要下载音频文件,首先得要找到下载音频的url)
优采云 发布时间: 2022-04-10 13:30网页音频抓取(页面分析我们要下载音频文件,首先得要找到下载音频的url)
页面分析
我们要下载音频文件,首先要找到下载音频的url,我们打开浏览器自带的调试工具(我用的是Chrome),使用快捷键F12快速打开调试工具。调试器切换到网络。我以刚看完的《腾讯传》为例,点击专辑封面中间的播放按钮。专辑中的音频信息都是json格式的数据。共有7个音频文件。
任意扩展音频的详细信息,详细信息包括音频文件的标题和下载链接。找到音频的下载链接后,就可以下载音频了。接下来的工作将重点介绍如何获取音频文件的下载链接。
获取页面源代码
我们首先定义一个函数来获取页面的html信息。浏览器标头信息标头被添加到此函数中。为了安全起见,使用代理IP。有兴趣的可以自己创建一个IP代理池,IP失效时会自动替换。
获取专辑信息
接下来,我们需要获取专辑的ID,因为音频的下载链接是由专辑ID拼接而成的。让我们看看收录音频文件名和下载链接信息的标题。我们可以看到albumId是专辑链接组成中的专辑ID。表示当前页码和该页存储的最大音频数。
相册的ID信息收录在关键字搜索的信息中。
专辑的ID信息通过BeautifulSoup从页面中提取出来,专辑标题信息也提取出来作为后面要创建的专辑目录名。主要代码如下。
获取页数
上述方法获取专辑ID信息。接下来,我们需要知道专辑下共享了多少页音频文件。我们通过将音频总数除以30得到页数。音频总数的信息在音频文件列表的数据中。下图中,我以《明朝事迹》为例,有大量的音频文件,一共268个音频文件。
有了音频总数,每页的音频数是30,所以我们可以计算出页数,可以分为3种情况:总数小于等于30,总数大于30和是30的倍数,总数大于30且不是30的倍数,相关代码如下。
下载音频文件
专辑ID、专辑名称、页数都在里面,音频文件就可以下载了。下载音频时,如果少于30个音频,需要做异常处理。音频文件为付费文件时,无法下载。这个时候,做出判断。当音频下载链接为null或None时,跳出循环爬取下一张专辑的文件。
在音频下载链接为空或无的情况下,这里以《明朝事迹》为例,通过关键字《明朝事迹》爬取的其中一张专辑总共只爬取了50个音频文件. ,以下音频文件不提供下载链接,无法下载。
创建一个目录来存储音频
为了将下载的音频文件有序的存放在以专辑名命名的文件夹中,我们使用代码自动创建一个目录,并将对应的文件下载到该目录中。
后记
本文的目的是将喜马拉雅的免费音频下载到本地并传输到手机上,让大家在保护视力的同时随时学习。当然,如果你有足够的流量,你也可以在APP上在线收听。
这个项目是通过输入关键字搜索音频专辑下载的。如果有些关键词没有对应的音频,系统会为你推荐音频,所以为了提高大家的效率,大家在运行代码之前,先下载喜马拉雅的音频网站输入你需要搜索的关键词看看有没有相关的音频,有的话就运行代码。一般来说,人气高的有声专辑都比较高。下载好需要的音频专辑后,后面的专辑不需要停止运行代码。
源码可在公众号“Python知识圈”回复“收听”获取。
如果觉得不错,点赞、点赞、转发到朋友圈,都是一种支持。
pk哥还没有开通留言功能,但是可以点击文章左下角的“阅读原文”进行留言。