宝藏B站UP主,视频弹幕尽收囊中!

2020年7月24日09:00:23 9 5,976 °C
摘要

爬 B 站视频和弹幕,会有新的挑战,本文会讲解一些你一定不知道的新思路。使用迅雷下载,反爬虫方法,尽在本文。

宝藏B站UP主,视频弹幕尽收囊中!

本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,技术干货文章、学习资料、一线大厂面试经验等应有尽有,欢迎 Star 和 完善。

一、前言

众所周知,B 站是一个学习网站。

「里面的人,个个都是人才,说话又好听,超喜欢那里的。」

B 站里有很多宝藏 UP 主,视频质量非常高。

想要下载 B 站视频,保存到硬盘里慢慢「学习」,那本文的 B 站视频下载教程可以帮到你。

没有弹幕的 B 站视频是没有灵魂的,弹幕当然也不能少。

B 站视频 + 弹幕下载,Let`s go!

爬 B 站视频和弹幕,会有新的挑战,本文会讲解一些你可能不知道的新思路。

二、手工耿

「刑部尚书」手工耿,以他奇思妙想的「刑具」而著称。

自制夫妻分分合合床,自制倒立洗头机,自制不锈钢 AK47 键盘,这都什么「妖魔鬼怪」。

宝藏B站UP主,视频弹幕尽收囊中!

今天就以他为例,下载他的所有视频和弹幕。

保存到硬盘,以备后续「深入学习」。

会了本文的方法,找一些收藏家 UP 主下载些小视频也就都不成问题了。

三、视频链接

首先看下手工耿的个人空间。

地址:https://space.bilibili.com/280793434

宝藏B站UP主,视频弹幕尽收囊中!

点击更多,打开他的全部视频。

查看请求,不难发现,视频链接是通过一个接口获得的。

宝藏B站UP主,视频弹幕尽收囊中!

这个 API 接口是这样的:

后面都 keyword 参数都是无用,我们直接看前面。

mid 就是用户的一种 id,可以通过用户首页获取这个 mid。

ps 是当前也加载视频的格式。

tid 一直为 0 即可。

pn 是翻页。

知道这些,就可以直接写代码,获取所有视频的链接了。

运行结果:

宝藏B站UP主,视频弹幕尽收囊中!

四、视频和弹幕下载

有了链接,接下来就可以下载视频了。

使用 you-get 这类工具下载 B 站视频,时常会抽风下载失败,很不稳定,有的视频链接还无法解析,问题很多。

自己解析视频的成本又高,因为网站可能会时常更新,那就得总改代码。

这回,咱换一个方法,使用别人搭建好的 B 站视频解析服务,抓包分析提供解析服务的网站,将视频解析的任务交给它们处理。

经过我精挑细选,找到了一个既稳定又快速的 B 站视频解析服务网站。

咱们直接拿解析好的视频地址下载即可。

jiexi_url 地址进行了隐藏,想要使用这个解析服务的地址,关注我的微信公众号,后台回复「B 站」获取。

这是为了防止这个 B 站视频解析服务网站被滥用,我对其进行了一些限制。

这种 API 的一种特点就是,知道的人越多它失效的也就越快

希望这样,它可以活得久一点。

宝藏B站UP主,视频弹幕尽收囊中!

可以看到,视频顺利解析。

这个视频解析网站,抓包分析也很简单,就是通过 GET 请求,设置 url 参数,然后进行解析。

解析的 url 通过正则表达式匹配。

视频下载地址获取到了,那怎么下载视频的弹幕呢?

打开视频页面,抓包分析。

URL:https://www.bilibili.com/video/BV1Ya4y1a7DC

这个是 PC 端的链接,打开这个视频,你可能花费九牛二虎之力,也找不到弹幕是怎么加载的。

B 站是怎么实现的,我们不清楚。

但是我们可以换个思路去尝试摸索,没准有意外收获。

记住,这也是一种常规的爬虫分析思路

我们将 URL 修改为移动端的链接:

URL:https://m.bilibili.com/video/BV1Ya4y1a7DC

可以看到,链接中的 www 改为了 m。

一个网站,有「 PC端」页面,也可能还有「 移动端」页面。

而「 移动端」页面,往往会因为一些原因,忘记或者为了适配,而没有「 PC端」健壮。

这就有机可乘

宝藏B站UP主,视频弹幕尽收囊中!

使用 Chrome 浏览器,可以直接开启移动端模式。这回再刷新页面,我们就能轻松找到视频弹幕的加载地址了。

甚至,「 移动端」页面还会返回视频的真实地址

宝藏B站UP主,视频弹幕尽收囊中!

瞧,视频的下载地址就这么轻易的拿到了。

不过,为啥本文没用这种方法呢?

因为这个是移动端的视频,视频清晰度是有限的。

如果对视频清晰度要求不高,倒是可以用这种方法下载视频。

我们再看这个视频弹幕怎么下载。

视频弹幕接口:

可以看到,只有一个参数 oid。

oid 可以通过,解析后的视频下载地址获得。

这里用到了一个 xml2ass ,这个是一个 xml转 ass 封装好的函数,直接用即可,其实就是变了一下文本格式。

xml2ass.py 文件地址:

https://github.com/Jack-Cherish/python-spider/blob/master/2020/bilibili/xml2ass.py

运行结果:

宝藏B站UP主,视频弹幕尽收囊中!

生成一个 ass 文件和 xml 文件。

ass 弹幕文件就是本地视频播放可以用的弹幕文件。

五、迅雷下载

对于视频下载,除了曾经写过的 requests、urlretrieve 方法,其实可以外接迅雷。

这么做的好处是,下载更稳定,可以批量提交给迅雷任务,下载速度也更快。

总而言之,更快更强。

程序调用迅雷下载,需要将迅雷设置为一键下载

宝藏B站UP主,视频弹幕尽收囊中!

此外,再将迅雷下载目录改为,我们的工程目录,并将「自动修改为上次使用的目录」去掉。

宝藏B站UP主,视频弹幕尽收囊中!

运行如下代码:

如果配置没错的话,那么程序会自动调用迅雷,下载视频。

宝藏B站UP主,视频弹幕尽收囊中!

可以看到,运行左边程序,可以给迅雷添加下载任务。

六、起飞

现在将所有功能模块整合到一起,开始下载手工耿的所有视频吧!

这里下载的是前 10 个视频,想下载全部视频,可以将 videos_list[:10] 改为 videos_list。

几分钟,就可以运行完毕,迅雷几兆/秒的下载速度可不是盖的。宝藏B站UP主,视频弹幕尽收囊中!

使用 PotPlayer 这类支持弹幕的播放器打开视频,即可自动加载弹幕,播放视频。

宝藏B站UP主,视频弹幕尽收囊中!

真香!

七、最后

使用迅雷下载,速度飞起。用本文的方法,爬 B 站视频,就很舒服。

代码、教程仅限于学习交流,请勿用于任何商业用途!

本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,技术干货文章、学习资料、一线大厂面试经验等应有尽有,欢迎 Star 和 完善。

宝藏B站UP主,视频弹幕尽收囊中!

weinxin
微信公众号
分享技术,乐享生活:微信公众号搜索「JackCui-AI」关注一个在互联网摸爬滚打的潜行者。
Jack Cui

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:9   其中:访客  8   博主  1

    • avatar 心灵博客 来自天朝的朋友 谷歌浏览器 Mac OS X 10_14_5 江西省景德镇市 电信 2

      最烦弹幕了,一直都是用插件禁用弹幕

        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Mac OS X 10_14_4 北京市 百度网讯科技联通节点

          @心灵博客 哈哈,个人喜好不同。我觉得还好。

          • avatar Bennie 来自天朝的朋友 谷歌浏览器 Windows 10 上海市静安区 /普陀区电信 0

            @心灵博客 弹幕影响我看正文,^_^

            • avatar sss 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 移动 0

              @心灵博客 把弹幕关了不就行了

            • avatar 来自天朝的朋友 Safari浏览器 Mac OS X 10_15_6 上海市 电信 0

              大佬,出现这个情况requests.exceptions.MissingSchema: Invalid URL ”: No schema supplied. Perhaps you meant http://?,我检查了下,iframe中src=‘’

              • avatar 云霞 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市 联通 0

                我也是出现了iframe中src=‘’为空

                • avatar 矮油我去456 来自天朝的朋友 谷歌浏览器 Windows 10 四川省成都市 电信 0

                  感谢大佬,看完觉得很有用

                  • avatar ee 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市 电信 0

                    可以看一下you-get源码是怎么下载弹幕的

                    • avatar ueyr 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市 电信 2

                      研究了一下,PS的意思是1页多少个视频。
                      PS=40,就一页40个
                      PS=10,就一页10个