爬虫之-bilibili视频下载-分片下载合并

4 篇文章 0 订阅
4 篇文章 0 订阅
  •  分片下载原理:

如100M文件,我们每次下载1M之后持续写到文件中,直到超出限度就停止写入(具体细节已在源码中进行了说明)

	
def fileDownload(homeurl, url, title, typ):
	"""
	视频及音频分片下载
	:param homeurl: B站地址
	:param url: 下载链接
	:param title: 视频名称
	:param typ: 类型: 0(视频)  1(音频)
	:return:
	"""
	headers = getHtmlHeaders
	# 加入返回服务器地址
	headers.update({'Referer': homeurl})
	if typ == 0:
		print("视频信息下载中····")
		filename = "./" + title + ".flv"
	else:
		print("音频信息下载中····")
		filename = "./" + title + ".mp3"
	# 指定每次下载1M的数据
	begin = 0
	end = 1024 * 1024 - 1
	flag = 0
	while True:
		# 添加请求头键值对,写上 range:请求字节范围
		headers.update({'Range': 'bytes=' + str(begin) + '-' + str(end)})
		# 获取视频分片
		res = requests.get(url=url, headers=headers, verify=False)
		if res.status_code != 416:
			# 响应码不为416时有数据,由于我们不是b站服务器,最终那个数据包的请求range肯定会超出限度,所以传回来的http状态码是416而不是206
			begin = end + 1
			end = end + 1024 * 1024
		else:
			headers.update({'Range': str(end + 1) + '-'})
			res = requests.get(url=url, headers=headers, verify=False)
			flag = 1
		with open(filename, 'ab') as fp:
			fp.write(res.content)
			fp.flush()
		if flag == 1:
			fp.close()
			break
  • 视频合并:(下载后的文件分为:.fiv的视频文件;.mp3的音频文件)

下载格式工厂,通过视频音频混流工具进行合并

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值