爬取B站视频 - m4s与flv文件的那些事

本文介绍了如何使用Python爬取B站视频,重点讨论了从m4s到flv的分界点及自动化分析过程。通过分析数据包和Json接口,找到了获取视频URL的方法,并展示了如何构造链接下载视频,包括单个视频的爬取和批量爬取的简单实现。
摘要由CSDN通过智能技术生成

参考链接

爬取B站视频

目录

1. 前言说明
2. 自动化分析
3. 爬取单个视频
4. 批量爬取视频
5. 总结

一、前言说明
  1. 前言
    每次查找资料和研究总是能够发现一些新鲜事【奈何我懂得太少】。这次因为相关的自动化爬虫的原因,继续研究了一下 B 站的 m4s 文件,果然发现了一些有用的东西。不过,这次博文主要目的是,为了记录整个资料查找和研究的过程,算是一个思考过程吧。【写自动化爬虫不太在行,也没有这个需求,而且工具好像也有一大推 emmmm…】。

  2. 额外的说明
    因为之前已经写过两篇文章,一篇是 爬取B站的flv视频,另一个是 爬取 m4s 的视频。这里就有一个问题,既然 B 站从 flv 改到了 m4s,那么分界点在哪里。因为可能有人会认为 B 站传来的视频全部改为 m4s 短视频流格式,其实不然,事实上大概是以某个时间点为界【当然也可以打我的脸】,两边分隔为 flv 和 m4s 的对立派。
    所以,采用二分法,目的是找到分隔点。
    av: 3050442920180827数据分析
    在这里插入图片描述
    在这里插入图片描述
    av: 30504430【iKON】「自存」那些有艺术感的video
    在这里插入图片描述
    在这里插入图片描述
    时间点确定为,2018-08-28
    在这里插入图片描述
    原来,我以为这是一个分隔点,但是后续的 av30504450 又是 flv 文件,所以勉强地认为这个分隔点上下浮动有一定范围,可能是一个衔接的过程。所以,大致在这个视频以前的投稿视频,姑且可以认为是 flv 视频,之后是 m4s 视频。

下面是正文部分

二、自动化分析

测试视频av66476652
在这里插入图片描述

  1. 依旧打开 F12,重新刷新,并找到指定数据包
    在这里插入图片描述
    既然我们的目标是实现自动化爬取 B 站的视频,那么如何获取 URL 是一个关键,而不是打开网页后抓包之后得到指定数据包后下载视频,这两者还是有区别的。
    以下是此数据包的 URL 链接:
    https://cn-zjwz3-dx-v-11.acgvideo.com/upgcxcode/80/78/115287880/115287880-1-30080.m4s?expires=1567849800&platform=pc&ssig=Fp1CahgHwsUBCEd45Yo5-Q&oi=2085381866&trid=4d431eaebd8e4536a416728143ba73ebu&nfc=1&nfb=maPYqpoel5MI3qOUX6YpRA==&mid=100938015

  2. 查看 m4s 文件的 URL 请求时提交的参数
    在这里插入图片描述
    从中,我们最多也只能知道 expire 代表了时间戳,platform 代表 pc 主机,mid 号应该是自己的 UID 号,但是其它的我们都不知道。

  3. 尝试搜索这些未知数据,找到了一个有用的数据包
    在这里插入图片描述
    在这里插入图片描述

  4. 格式化 Json 数据,并进一步分析这个数据包
    好像里面就有我们需要的 m4s 的链接,假如解决了 Json 数据包 URL 的获取问题,那么这个问题不就解决了么。

{
   
	"code": 0,
	"message": "0",
	"ttl": 1,
	"data": {
   
		"from": "local",
		"result": "suee",
		"message": "",
		"quality": 80,
		"format": "flv",
		"timelength": 229291,
		"accept_format": "hdflv2,flv,flv720,flv480,flv360",
		"accept_description": ["高清 1080P+", "高清 1080P", "高清 720P", "清晰 480P", "流畅 360P"],
		"accept_quality": [112, 80, 64, 32, 16],
		"video_codecid": 7,
		"seek_param": "start",
		"seek_type": "offset",
		"dash": {
   
			"duration": 230,
			"minBufferTime": 1.5,
			"min_buffer_time": 1.5,
			"video": [{
   
				"id": 80,
				"baseUrl": "http://cn-zjwz3-dx-v-11.acgvideo.com/upgcxcode/80/78/115287880/115287880-1-30080.m4s?expires=1567850700\u0026platform=pc\u0026ssig=S3R6tNYzukQZ6D4M3w-k8g\u0026oi=2085381866\u0026trid=8e7b80f4881c4966af032947f69736ceu\u0026nfc=1\u0026nfb=maPYqpoel5MI3qOUX6YpRA==\u0026mid=100938015",
				"base_url": "http://cn-zjwz3-dx-v-11.acgvideo.com/upgcxcode/80/78/115287880/115287880-1-30080.m4s?expires=1567850700\u0026platform=pc\u0026ssig=S3R6tNYzukQZ6D4M3w-k8g\u0026oi=2085381866\u0026trid=8e7b80f4881c4966af032947f69736ceu\u0026nfc=1\u0026nfb=maPYqpoel5MI3qOUX6YpRA==\u0026mid=100938015",
				"backupUrl": null,
				"backup_url": null,
				"bandwidth": 1447135,
				"mimeType": "video/mp4",
				"mime_type": "video/mp4",
				"codecs": "avc1.640028",
				"width": 1920,
				"height": 1080,
				"frameRate": "16000/672",
				"frame_rate": "16000/672",
				"sar": "1:1",
				"startWithSap": 1,
				"start_with_sap": 1,
				"SegmentBase": {
   
					"Initialization": "0-975",
					"indexRange": "976-1559"
				},
				"segment_base": {
   
					"initialization": "0-975",
					"index_range": "976-1559"
				},
				"codecid": 7
			}, {
   
				"id": 64,
				"baseUrl": "http://cn-zjwz3-dx-v-01.acgvideo.com/upgcxcode/80/78/115287880/115287880-1-30064.m4s?expires=1567850700\u0026platform=pc\u0026ssig=DCgoPxhgaq52RqUXD07bcw\u0026oi=2085381866\u0026trid=8e7b80f4881c4966af032947f69736ceu\u0026nfc=1\u0026nfb=maPYqpoel5MI3qOUX6YpRA==\u0026mid=100938015",
				"base_url": "http://cn-zjwz3-dx-v-01.acgvideo.com/upgcxcode/80/78/115287880/115287880-1-30064.m4s?expires=1567850700\u0026platform=pc\u0026ssig=DCgoPxhgaq52RqUXD07bcw\u0026oi=2085381866\u0026trid=8e7b80f4881c4966af032947f69736ceu\u0026nfc=1\u0026nfb=maPYqpoel5MI3qOUX6YpRA==\u0026mid=1
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值