作者: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视频,难吗?相关推荐

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

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

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

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

  3. python爬取bilibili视频

    俺好久没用python的pip了, 今天pip3 install you-get的时候提示我要更新了. You are using pip version 19.1.1, however versio ...

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

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

  5. 爬取bilibili视频

    几句命令行轻松实现爬取bilibili视频,辅助工具:you-get(爬取视频).ffmpeg(合并音视频). 爬取完整的bilibili视频 you-get使用 you-get安装 you-get使 ...

  6. python爬取bilibili弹幕_Python抓取BiliBili拦河坝并生成单词云,爬取,bilibili,弹幕

    木秀于林,风亦惧之:虽为萤火,亦绽光芒. Python爬取bilibili弹幕并生成词云 目标网站: 哔哩哔哩: https://www.bilibili.com/ 我这里以 TES vs SN 第四 ...

  7. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片

    原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...

  8. 爬取Bilibili视频评论(弹幕同样原理)

    爬取Bilibili视频评论(弹幕同样原理) 找到B站的评论接口 F12,找到B站的评论接口 可以看到所需要的请求头以及请求参数 请求参数: 可以使用Postman等,请求接口,可以看到json串(这 ...

  9. python爬取bilibili弹幕_用Python爬取B站视频弹幕

    原标题:用Python爬取B站视频弹幕 via:菜J学Python 众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一 ...

最新文章

  1. MyBatis Generator模板
  2. 有向图的深度/广度优先遍历算法
  3. 用友2020校招java笔试题_用友Java类笔试题大全
  4. UIView 中常见的方法总结
  5. 最小错误率贝叶斯决策的基本思想_机器学习笔记—模式识别与智能计算(四)基于概率统计的贝叶斯分类器设计(贝叶斯决策)...
  6. 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk
  7. 关于嵌入式学习随笔-1《STM32简介》
  8. CSS3常用功能 旋转等
  9. 北京云计算HCIE培训机构入门技术快速了解laaS、Paas和 SaaS的区别-ielab网络实验室
  10. java 裁剪 pdf_PDFBox:使用Java轻松从PDF文件提取内容
  11. 【VirtualAPP 双开系列06】启动加载第三方 APP 过程
  12. TCGA临床数据整理
  13. MATLAB bp神经网络的雾霾天气下交通标志的识别系统
  14. TAPD使用方法学习
  15. godot引擎学习10
  16. Nginx 同时运行多个服务
  17. 如何在桌面版linux怎么安装360安全卫士?
  18. 计算机一级考试个人小结作文,期中考试个人总结作文
  19. 【C/C++ 经典小程序(一)】
  20. Linux 域名解析实验

热门文章

  1. Laravel核心技术解析(1)—— Composer 组件管理与自动加载
  2. 两个数组的交集 II---简单
  3. AWS EC2怎么动态增加磁盘空间
  4. 01_appium自动化环境的搭建
  5. 一个Demo学会用Android兼容包新控件
  6. Objective-C 的动态提示和技巧
  7. CentOS 5.8 Zimbra邮件系统安装与配置
  8. 面试精讲之面试考点及大厂真题 - 分布式专栏 06 详细说下CAP分别代表什么含义吗
  9. BGP——Route-map扩展(讲解+配置)@
  10. CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群