python爬虫加入进度条

安装tqdm和requests库

pip install tqdm -i  https://pypi.tuna.tsinghua.edu.cn/simple

pip 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',  # 显示单位为MB
                     desc="视频下载"):  # 进度条前缀描述
        file.write(data)  # 将读取到的数据写入文件

在这里插入图片描述

上一篇:[USACO24OPEN] Smaller Averages G (单调性优化dp)


下一篇:uniapp本地打包到Android Studio生成APK文件