知行编程网知行编程网  2022-05-02 08:00 知行编程网 隐藏边栏 |   抢沙发  6 
文章评分 0 次,平均分 0.0


点击上方“菜鸟学Python”,关注

文末干货立马到手

用Python爬取Bilibili上二次元妹子的视频
作者:Mike_Shine
来源:https://urlify.cn/2qyMBb

一直想爬取BiliBili的视频,无奈一直没有去研究一下。

最近,在旭哥的指点之下,用了Fiddler抓包,抓到了一直期待的视频包,完成了下载。

下面写一下我做这个爬虫的过程。

# 相关依赖  :Fiddler+Python3 + Requests

下面看一下我做这个爬虫的具体步骤:

1. 进入某个具体视频的页面抓取视频包测试。

进入这个页面:https://www.bilibili.com/video/av26019104,如下图所示。点击播放按钮。

用Python爬取Bilibili上二次元妹子的视频

可以看到Fiddler已经抓到了很多包。别着急,现在还没有视频包出现。由于需要时间下载,所以具体视频包会过一会才能弹出来。
用Python爬取Bilibili上二次元妹子的视频

过大概一两分钟,就会看到这个包,如下图。可以清楚的看到这个是Flv形式的视频流的包,看这个包的大小也可以看出来,是相当的大。

用Python爬取Bilibili上二次元妹子的视频

下面分析一下这个包的具体参数。点击上图红色圈圈那个“Raw",会弹出下面这个窗口

用Python爬取Bilibili上二次元妹子的视频

可以看到是一个Get请求,请求的url和Headers都很清楚。

这时候就可以实验一下,来写一小段代码测试一下是否可以通过requests.get()方法来下载视频。


可以看到如果你运行这段代码,已经可以把视频下载到了本地。

这里你可以多试几个视频,可能会发现,有些视频按照抓包得到的Headers,请求之后只能Get到一部分视频,比如视频8M,你Get到只有2M。你去看一下Headers就会发现,他多了一个Range参数。把这个删除掉,就可以下载了。

经过我的实验,所有视频请求的Headers格式都可以统一为下图这样。里面有2个参数哈。

1.host,主机名,就是从你爬出来的URL中正则出来的host

2. 视频标号。

用Python爬取Bilibili上二次元妹子的视频

2. 获取请求Headers参数和请求源URL:

要找URL,可以看一下URL中的内容,里面的hfa=xxxxxxxx和hfb=xxxxxxx应该是加密的?这可怎么办。这时候用Fiddler,从抓来的包里搜索一下这两个参数,肯定藏在某个包里。用CTRL + F 输入hfa 搜索。可以看到包含HFA关键字的包都被找出来了。

进去一看,其实包含在网页源代码的包,也就是说URL中的参数包含在网页源代码里。

回到最初的那个视频页面,看一下网页源代码。搜索一下URL。

用Python爬取Bilibili上二次元妹子的视频

惊喜的发现,其实整个URL都在网页源码里。这岂不是太简单了。

不过需要注意的是,这个URL中含有的hfa等加密部分是会动态变化的。所以在最终脚本的代码结构中,需要拿一个URL,及时用来做get请求。下载完成之后再拿下一个URL。

我之前就犯过这样的错,由于URL过期,导致部分视频下载不到。

3. 从UP主的主页爬取所有视频的信息(视频编号,标题)。

在之前的实验之上,现在只要有视频编号,我们就可以下载到对应的视频了。所以接下来要做的工作就是从Up主的主页来获取所有的视频信息。

访问某个Up主的主页

用Python爬取Bilibili上二次元妹子的视频

点击圈圈的更多,可以进入所有视频的页面。

这时候看Filddler抓包的结果,看到这个json包,里面包含了本页所有视频的信息。

用Python爬取Bilibili上二次元妹子的视频

同样,看一下包头。如下图

用Python爬取Bilibili上二次元妹子的视频

也做一下实验,可以发现Cookie是不必须的参数。

同之前下载视频的Get方法,同样可以Get到这个Json包。然后就可以把内容通过Json解析的语句拿出来。

这里我并没有做翻页的工作,而是直接请求了100个视频。想做翻页的同学,加一点代码就好了。

<h1 style=""><pre style="letter-spacing: 0.544px;background-color: rgb(255, 255, 255);color: rgb(63, 63, 63);text-align: left;font-size: 16px;word-spacing: 1px;line-height: inherit;"><p><strong>近期热门:</strong><br  /></p><p style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);"><span style="font-size: 16px;">● </span><span style="font-size: 16px;text-decoration: underline;">80%的人都不知道,全球Python库下载前10名</span></span></p><p style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;">● 我珍藏的一些好的Python代码,技巧|上篇</p><p style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);"><span style="font-size: 16px;">● </span><span style="font-size: 16px;text-decoration: underline;">爬取300本Python书籍,用Python告诉你哪家强?</span></span></p><section style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);"><span style="font-size: 16px;">● </span><span style="font-size: 16px;text-decoration: underline;">简单几步,100行代码用Python画一个蝙蝠侠的logo</span></span></section><section style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);"><span style="font-size: 16px;">● </span><span style="font-size: 16px;text-decoration: underline;">我用Python分析了《青春有你2》109位漂亮小姐姐,真香!</span></span></section><section style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);font-size: 16px;">● </span><span style="font-size: 16px;color: rgb(0, 122, 170);text-decoration: underline;">牛逼操作!用Python做了一个编程语言20年的动态排行榜!</span></section><section style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);font-size: 16px;">● </span><span style="color: rgb(0, 122, 170);text-decoration: underline;font-size: 16px;">我打赌,学会这6招,谁再敢笑你的Python程序慢!</span></section><section style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><br  /></section><section style="margin-top: 10px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="font-size: 15px;word-spacing: 2px;caret-color: rgb(62, 62, 62);letter-spacing: 0.544px;color: rgb(255, 41, 65);"><strong><span style="border-color: rgb(127, 127, 127);">点击阅读原文,原创400篇干货文章</span></strong></span></section>

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享