安装tqdm和requests库
pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simplepip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
带进度条下载
import time # 引入time模块,用于处理时间相关的功能
from tqdm import * # 从tqdm包中引入所有功能,tqdm用于在循环中显示进度条
import requests # 引入requests模块,用于发起网络请求# 设置请求头信息,模拟浏览器访问
headers = {"accept": "*/*", # 接受任何类型的返回数据"accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", # 设置接受的语言类型和优先级"cache-control": "no-cache", # 通知服务器不使用缓存,获取最新的数据"pragma": "no-cache", # 与cache-control类似,某些服务器可能会用到"priority": "i", # 请求的优先级"range": "bytes=2523136-", # 请求部分内容,从指定字节开始到结束"referer": "https://v.jstv.com/", # 通知服务器该请求是从哪个页面来的"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Microsoft Edge\";v=\"126\"", # 安全相关的客户端信息"sec-ch-ua-mobile": "?0", # 是否为移动设备"sec-ch-ua-platform": "\"Windows\"", # 客户端平台"sec-fetch-dest": "video", # 请求的目的地,这里是视频"sec-fetch-mode": "no-cors", # 请求模式,不进行跨域资源共享(CORS)预检请求"sec-fetch-site": "same-site", # 请求的站点,这里是同站请求"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0" # 用户代理,模拟浏览器信息
}# 视频文件的URL
url = "https://vod.v.jstv.com/2024/07/08/JSTV_JSGGNEW_1720439020421_QW5qn10_1879.mp4"# 发起网络请求,获取视频文件流,并设置请求头
response = requests.get(url, stream=True, headers=headers)# 获取视频文件的大小,并转换为MB或GB单位显示
contant_size = int(response.headers['content-length']) / 1024 / 1000 # 从响应头中获取内容长度,并转换为MB
if contant_size > 1000:print("视频大小", '{:.2f}'.format(contant_size / 1000), "gb") # 如果大于1000MB,则显示为GB
elif contant_size > 1:print("视频大小", '{:.2f}'.format(contant_size), "mb") # 如果大于1MB,则显示为MB
elif contant_size < 1:print("视频大小", '{:.2f}'.format(contant_size * 1000), "kb") # 如果小于1MB,则显示为KB# 打开一个名为"测试.mp4"的文件,以二进制写模式
with open(r"测试.mp4", "wb") as file:# 使用tqdm进度条显示下载进度for data in tqdm(iterable=response.iter_content(1024 * 1000), # 每次读取1024KB数据total=contant_size, # 进度条的总长度为文件大小postfix='带带爬虫', # 进度条后缀unit='mb', # 显示单位为MBdesc="视频下载"): # 进度条前缀描述file.write(data) # 将读取到的数据写入文件