【哔哩哔哩】 Python爬虫下载bilibili视频

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。

前言

近日,有小伙伴说想看一篇关于视频下载的文章,这不,拿bilibili来开刀了。
由于没有深入的对bilibili进行研究,导致文章可读性比较差,不喜勿喷。
虽是浅尝辄止。但是下载视频的目的可以达到。

1. 思路

在这里说下整体思路!

  1. 找到视音频的url是关键
  2. 分别下载视音频后,再进行视音频混流(即画面和声音合成一个文件)。

话不多说,下面开始!!!

2. 分析

文章以下图中的视频为例。文中为Firefox浏览器,方便展示抓包效果。在这里插入图片描述
首先就是打开开发者工具抓包啦。如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

看到抓包页面的媒体分类,都是mp4格式的数据包,数据包的大小从107字节到2.30MB不等。有一个很有趣的规律如下:

  1. 107字节的数据包都是通过OPTIONS的方式请求。
  2. 大一些的数据包都是通过GET方式请求。
  3. 有两个重复多次的URL(猜测是视音频)
  4. 请求头的Range字段,下一个文件会接上上一个文件的字节尾数,1文件是0-973,2文件是974-1653。。。

既然如此,下面用代码来请求一下看看。
在这里插入图片描述
执行代码后,生成了一个1kbtest.mp4文件,很显然,打开时候报错了
在这里插入图片描述
为什么会报错呢??我觉得是文件太小了,修改请求头的Range值为0-1024000,再次运行代码。
这次生成了一个1001kbmp4文件,且可以播放!!但是视频没有声音,证实 了bilibili的视频文件是视音频分离的。
在这里插入图片描述

上面有说到,抓到的数据包大部分是两个重复的URL,现在请求另一个URL看看。

代码只是将URL做了修改,请求头没有变化。
在这里插入图片描述
(图中看不出是音频,但是是有声音的),这样,就完成本次抓包工作了。
在这里插入图片描述


到了这里,抓包工作已经完成,视音频的由来也清楚了,那问题来了,这么场的一串URL是从哪里来的呢?
!!! 看源码。
百思不得其解,却忘记了最简单的方法,查看网页源码(花费了好一会儿时间才发现,原来源码里面就有!!!)

video的URL:
在这里插入图片描述
audio的URL:
在这里插入图片描述
到了这里,剩下的用正则匹配源码里面的video和audio的URL都不是问题了吧!!!


剩余问题:

  • 还需将视频和音频混流,这个可以用ffmpeg完成或使用格式工厂。

代码我还没有写好,思路如上!!

打完收工。

3. 后面的话

小伙伴们如果感兴趣的话,可以完善代码。几个建议如下:

  1. 增加可以手动输入搜索视频的功能
  2. 视音频混流在代码内部完成,不借助外部工具
  3. 利用Pyqt5做成可视化的bilibili视频下载小工具

完善后代码记得发我一份哦!!!

发布了45 篇原创文章 · 获赞 527 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_45081575/article/details/104334749
今日推荐