欢迎光临散文网 会员登陆 & 注册

下载B站视频到本地当素材 - 基于Python

2022-05-25 10:40 作者:码夫破石  | 我要投稿

写在最前面:

最近头晕脑胀发烧,咳嗽流鼻涕,重感冒而已,不是那什么。所以居家进行创作吧。今天无聊,天天逛B站,总不能不晓得B站的视频是怎么撸(其实就是下载了)的是吧。

工具和环境:

  • Python 3.8.9

  • Pycharm

  • windows11

今天要采集的网站是B站,目标是将想要的视频下载到本地。B站的视频数据存储格式跟其他的视频网站不太一样(而且B站的视频数据和音频数据是分开的)别人的网站视频可能存储在json数据里,很好找,B站的视频数据,我是废了好大劲才找到,没有json肯定在源码里嘛,不然你怎么渲染。

思路和步骤:

  • 找到想要下载的视频,F12,打开开发者工具(Chrome哈),我这里找的是https://www.bilibili.com/video/BV1nr4y1T7xX?spm_id_from=333.337.search-card.all.click

  • 发现media下没有视频数据被渲染;再找下Fetch/XHR 下面的数据,也没有发现可用的;

  • 源码里继续找,发现了新大陆,只是存储在一行代码里,很难查找,那就用Python把网页响应数据打印出来在去查找就好看一些了;

  • 下面附几张图


media下没有数据

Fetch/XHR下没有可用数据,在源码里

正文开始:

先用requests模块请求一下视频播放页的数据。上图:

请求视频播放页响应数据

请求了之后按照标题或者其他字符进行查找,我这里以标题进行查找,找到关键词前面有引号有title,很像json,就往前滑,然后它真的就是个类似json数据的东西。

提取数据:

两张图:

怀疑是存储json数据的得分
打印一下,真的是json数据

从json数据里提取数据上代码:

至此音频和视频数据都下载完毕。接下来就是将音频数据和视频数据进行合并。用ffmpeg就行了。不过ffmpeg好像对中文的支持不是很好。

需要注意的是:

去请求视频和音频的真实地址的时候,要加防盗链,如果没有防盗链,会403。

等有时间有精力,做个简单的GUI程序,等做GUI的时候,再录个视频。

下载B站视频到本地当素材 - 基于Python的评论 (共 条)

分享到微博请遵守国家法律