抓取网页音频(构建循环附带条件构建bilibiliSpider()类1.主体框架说明)

优采云 发布时间: 2022-03-25 06:02

  抓取网页音频(构建循环附带条件构建bilibiliSpider()类1.主体框架说明)

  从某年开始,B站视频中缓存的视频被分段,比较不方便。所以我个人想用 Python 更自动化。

  由于视频和音频是分开的,所以需要先请求视频和音频的URL,然后通过各自的URL获取各自的内容。最后,在moviepy的帮助下合成视频和音频。

  关于批处理爬取,一开始觉得太复杂了(当然,相对于其他更快的方法,基于这种方法就复杂了),导致重复出现异常。睡了一觉后,我发现自己豁然开朗。复杂的是,在Network中找到key名后,为了更自动的获取通用ID,走了很多弯路。直到后来我才发现通用 ID 在 URL 中。

  大致思路如下:进入喜欢UP主的空间后,点击播放全部(图片1),

  

  图1

  → 进入新页面,找到网址(图片2)),没有附加视频BV,需要换个思路。

  

  图 2

  → 右键查看页面,在Network栏下找到一个特殊的名字(图3),里面收录了Up主的其他视频(图4,5).

  

  图 3

  

  图4

  

  图 5

  →思路清晰,我们可以通过请求图2中的页面找到图3所示的信息组,然后请求获取json数据迭代索引的URL获取每个bv_id。

  代码及分析如下:

  ①获取bv_id并导入相关

  

  说明:User-Agent是在网页的header部分获取的,可以自己获取和进入。

  ②有跳转条件的构造循环

  

  ③ 构建bilibiliSpider()类

  1.主框架

  

  注意:这里的合成视频和音频的方法已经调整。一开始,我发现ffmpeg不好用。在交流群前辈的指导下,我改用了moivepy,更方便好用。

  2.发送通用请求格式(方便

  

  解释:全局表示请求内容在其他方法中是必需的。

  3.请求获取header、JSON数据、音视频Url

  

  注:title index、jsonData index、videoUrl index、audioUrl index以及上面的Referer都可以在图中找到,大致流程是右键查看页面获取信息(图6、7、< @k38@ >。

  

  ​​​

  图 6

  

  ​​​

  图 7

  

  ​​​

  图 8

  4.保存数据

  

  5.结合的视频和音频

  

  注意:路径一定要正确,否则找不到会报错(可以自己设置路径,可以前后统一)。后面的条件语句在明确之前从单独的视频和音频开始,合成的名称带有加号,防止系统根据单独的视频错误删除。

  用ffmpeg结合视频和音频一开始并不顺利(图9),所以我切换到moviepy.

  

  ​​​

  图 9

  6.调用方法

  

  说明:全文尽量统一

  全文代码如下:

  

  

  

  

  测试运行:

  

  ​​​

  综上所述,还有提升空间,比如下载速度太慢。然后是图像质量的选择。爬的时候默认最高,具体自定义画质还在研究中(就是文中的params好像没啥用,有待测试)。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线