用Python爬取Bilibili视频,难吗?
作者:Mike_Shine
来源:https://urlify.cn/2qyMBb
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789
一直想爬取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是跳过证书认证
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个视频。想做翻页的同学,加一点代码就好了。
用Python爬取Bilibili视频,难吗?相关推荐
- python爬取bilibili数据_如何使用Python爬取bilibili视频(详细教程)
Python爬取bilibili视频 摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视 ...
- Python爬取bilibili视频(期末设计)
摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视频下载与分片拼接视频两种思路实现程序, ...
- python爬取bilibili视频
俺好久没用python的pip了, 今天pip3 install you-get的时候提示我要更新了. You are using pip version 19.1.1, however versio ...
- python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频
[Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...
- 爬取bilibili视频
几句命令行轻松实现爬取bilibili视频,辅助工具:you-get(爬取视频).ffmpeg(合并音视频). 爬取完整的bilibili视频 you-get使用 you-get安装 you-get使 ...
- python爬取bilibili弹幕_Python抓取BiliBili拦河坝并生成单词云,爬取,bilibili,弹幕
木秀于林,风亦惧之:虽为萤火,亦绽光芒. Python爬取bilibili弹幕并生成词云 目标网站: 哔哩哔哩: https://www.bilibili.com/ 我这里以 TES vs SN 第四 ...
- python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片
原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...
- 爬取Bilibili视频评论(弹幕同样原理)
爬取Bilibili视频评论(弹幕同样原理) 找到B站的评论接口 F12,找到B站的评论接口 可以看到所需要的请求头以及请求参数 请求参数: 可以使用Postman等,请求接口,可以看到json串(这 ...
- python爬取bilibili弹幕_用Python爬取B站视频弹幕
原标题:用Python爬取B站视频弹幕 via:菜J学Python 众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一 ...
最新文章
- MyBatis Generator模板
- 有向图的深度/广度优先遍历算法
- 用友2020校招java笔试题_用友Java类笔试题大全
- UIView 中常见的方法总结
- 最小错误率贝叶斯决策的基本思想_机器学习笔记—模式识别与智能计算(四)基于概率统计的贝叶斯分类器设计(贝叶斯决策)...
- 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk
- 关于嵌入式学习随笔-1《STM32简介》
- CSS3常用功能 旋转等
- 北京云计算HCIE培训机构入门技术快速了解laaS、Paas和 SaaS的区别-ielab网络实验室
- java 裁剪 pdf_PDFBox:使用Java轻松从PDF文件提取内容
- 【VirtualAPP 双开系列06】启动加载第三方 APP 过程
- TCGA临床数据整理
- MATLAB bp神经网络的雾霾天气下交通标志的识别系统
- TAPD使用方法学习
- godot引擎学习10
- Nginx 同时运行多个服务
- 如何在桌面版linux怎么安装360安全卫士?
- 计算机一级考试个人小结作文,期中考试个人总结作文
- 【C/C++ 经典小程序(一)】
- Linux 域名解析实验