安裝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) # 將讀取到的數據寫入文件