1、獲取下載鏈接
下載鏈接為:http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe
2、使用tqdm實現
- 2.1、從response的headers中獲取文件大小,同時注意:get請求中#stream=True參數的作用是僅讓響應頭被下載,連接保持打開狀態
- 2.2、以wb模式打開文件
- 2.3、使用注意調用iter_content,一塊一塊的遍歷要下載的內容,搭配stream=True,此時才開始真正的下載
原始代碼:模板
1 import requests 2 from tqdm import tqdm 3 4 def downloadFILE(url,name): 5 resp = requests.get(url=url,stream=True) 6 #stream=True的作用是僅讓響應頭被下載,連接保持打開狀態, 7 content_size = int(resp.headers['Content-Length'])/1024 #確定整個安裝包的大小 8 with open(name, "wb") as f: 9 print "安裝包整個大小是:",content_size,'k,開始下載...' 10 for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name): 11 #調用iter_content,一塊一塊的遍歷要下載的內容,搭配stream=True,此時才開始真正的下載 12 #iterable:可迭代的進度條 total:總的迭代次數 desc:進度條的前綴 13 f.write(data) 14 print name + "已經下載完畢!" 15 16 if __name__ == '__main__': 17 url = "需要下載的文件的地址" 18 name = url.split('/')[-1] #截取整個url最后一段即文件名 19 downloadFILE(url,name)
優化代碼:
1 from tqdm import tqdm 2 import time,requests 3 4 def downloadFILE(url,name): 5 resp = requests.get(url=url,stream=True) 6 content_size = int(resp.headers['Content-Length'])/1024 7 with open(name, "wb") as f: 8 print("Pkg total size is:",content_size,'k,start...') 9 for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit='k',desc=name): 10 f.write(data) 11 print(name + "download finished!") 12 if __name__ == '__main__': 13 url = "http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe" 14 name = url.split('/')[-1] 15 downloadFILE(url,name)
效果:在jupyter中
下載的文件:
雙擊下載的文件:
證明下載的文件沒問題!