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

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

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

相关依赖  :Fiddler+Python3 + Requests

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

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

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

可以看到Fiddler已经抓到了很多包。别着急,现在还没有视频包出现。由于需要时间下载,所以具体视频包会过一会才能弹出来。

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

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

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

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

#######################################################################

import requests

with open("D:\video\bilibili.mp4") as f:

f.write(requests.get(url, headers = headers, verify = False).content)       #这里的Verify=False是跳过证书认证

# 没有证书认证会warning,但不影响

print("下载完成")            # 这里只是写了核心部分,headers和url没有写,直接copy过来就好了,

# 注意Url前面要加Host.   真正的请求地址是http://主机Host地址/upgcx.......

############################################################################

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

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

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

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

2. 视频标号。

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

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

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

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

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

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

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

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

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

访问某个Up主的主页

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

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

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

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

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

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

4. 全部的整合起来:

具体脚本点击下面链接去下载。只需要更改Up主的Mid编号即可下载不同的Up主的作品。

都很简单。如果这些东西你还看不懂,那可能是你对基本的爬虫还不够理解。

有问题欢迎留言,我会及时回答。

这里下载脚本

请尊重原创!!!!!!!!

如果你要转载,请以醒目的标识著名源地址。

你也不想自己用心做的东西被剽窃。

Bilibili视频爬虫相关推荐

  1. 基于java实现bilibili视频爬虫

    实验概述 [实验项目名称] Implementing a Bilibili video webcrawler [实验目的] Understand HTTP requests, responses, a ...

  2. python爬取bilibili数据_如何使用Python爬取bilibili视频(详细教程)

    Python爬取bilibili视频 摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视 ...

  3. Python爬取bilibili视频(期末设计)

    摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视频下载与分片拼接视频两种思路实现程序, ...

  4. python爬虫bilibili_Python爬虫 bilibili视频弹幕提取过程详解

    两个重要点 1.获取弹幕的url是以 .xml 结尾 2.弹幕url的所需参数在视频url响应的 javascript 中 先看代码 import requests from lxml import ...

  5. python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频

    [Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...

  6. [python爬虫] bilibili视频评论翻页功能

    bilibili视频评论翻页逻辑 翻页功能 (Android App抓包 不是web端 但原理都适用) 设 1. 总评论数y 2. 第几页(当前爬到第几页)z 利用 z小于等于y就会有数据的逻辑 一页 ...

  7. Mac下载Bilibili视频

    今天剪辑视频的时候,在Bilibili看到了想要的素材.想着白嫖是多么的舒服,于是研究了几个小时碰瓷Bilibili视频的方法. 网上是有挺多的,什么在bilibili前面加i,加jj,一些乱七八糟的 ...

  8. Python中使用you-get库批量在线下载bilibili视频的教程

    此文章描述的是在windows10系统pc端python环境下,利用you-get库来进行bilibili视频批量下载,是在cmd中操作完成,只建议有python环境的用户使用. 1.安装you-ge ...

  9. Javascript 创建书签小工具 (bilibili视频下载为例)

    书签小工具(Bookmarklets)是一个非常棒的javascript代码小片断伪装成的小应用,它驻留在你的浏览器里并为网页提供额外的功能.这里我们将研究如何从头开始创建一个书签小工具及一些最佳实践 ...

最新文章

  1. 谷歌论文:使用深度强化学习的芯片布局
  2. java集合使用_java集合使用初步
  3. 【转】强大的B树B+树
  4. 知识图谱理论与实践(以问答系统为例)
  5. 网络工程师第五站-有线、无线同网段混合组网(多FAT案例)
  6. 20-21-2网络管理quiz4
  7. HP ProLiant DL380 G6 服务器 - 清 BIOS 的方法
  8. python实现3d建模工具_Python实现3D建模工具
  9. Arduino(MEGA2560)最小系统电路设计以及固件(bootloader)烧录方法(free)
  10. 数论基础及其代码实现
  11. git cherry-pick操作
  12. 计算机能力提升选网络研修,教师计算机能力提升个人研修计划
  13. OUC-SE-BLOG1
  14. 吸粉神器——维盟智慧wifi,微信粉丝生产基地!
  15. 柔性机械臂_少年,这儿有个“超柔软”的6轴机械臂求带走
  16. 在树莓派Raspbian/Debian 10 Buster上安装ROS
  17. SQL Server安全:登录和用户
  18. Acrel-2000E/B配电室综合监控系统在配电室的应用
  19. 5款100元千兆WiFi5路由器,刷机玩真的香
  20. 正则表达式-至少包含一个大小写字母和数字且有位数限制

热门文章

  1. 如何在微信上直接打开淘宝,解决微信屏蔽淘宝链接的方法
  2. html文件必须由特定的程序进行编译和执行才能显示,这种编译器就是,HTML 文件必须由特定的程序进行编译和执行才能显示, 这种编译器就是()....
  3. [转帖]深圳少儿医保如何绑定医院
  4. 企业参加社保须知(缴费比例表)
  5. 【风靡全球年近40年的C++过时了吗?C++20来告诉大家】
  6. python中扑克牌类设计_一摞Python风格的纸牌
  7. Gmail和Orkut邀请自助发送[共享]
  8. 中创算力|分布式维基百科新语言版本服务上线,IPFS助力Web3.0!
  9. [Centos7]Mirai QQ机器人监听播报TeamSpeak3用户状态
  10. c语言常数-ox6a是什么意思,C语言第2讲-数据类型运算符和表达式.pdf