(大概
使用stream参数进行流式下载
import requests
headers = {
"accept": "*/*",
"range": "bytes=0-",
"sec-fetch-dest": "video",
}
url = "https://xxx.com/84007e45-e3d0-4658-9d70-d24a4a65603c.mp4"
response = requests.get(url, headers=headers, stream=True)
with open('1.mp4', 'ab') as fp:
for i in response.iter_content(chunk_size=1024):
print("写入!")
fp.write(i)
几个点需要说明一下:
- response的响应码是206
- 当然也可能是这个站是206,
- 请求头的”range”: “bytes=0-“,
- 用于告诉服务器从视频的哪一段开始获取
- 不传则无法正常下载
- 参数stream=True:
- 用于让requests进行流式下载,不是等待所有都下完才操作,而是每下载到chunk_size的字节,就对其进行操作,比如写入文件中
- 如果不适用stream,则会一直等待,造成卡死的假象,其实是在下载视频,下完了才继续走

发表回复