1. 程式人生 > >Python urllib urlretrieve函數解析

Python urllib urlretrieve函數解析

參考 臨時文件 tar owa .com 以及 保存數據 方法 urllib

Python urllib urlretrieve函數解析

利用urllib.request.urlretrieve函數下載文件

覺得有用的話,歡迎一起討論相互學習~Follow Me

參考文獻
Urlretrieve函數解析

urllib.request.urlretrieve函數解析

urlretrieve(url, filename=None, reporthook=None, data=None)
參數 finename 指定了保存本地路徑(如果參數未指定,urllib會生成一個臨時文件保存數據。)
參數 reporthook 是一個回調函數,當連接上服務器、以及相應的數據塊傳輸完畢時會觸發該回調,我們可以利用這個回調函數來顯示當前的下載進度。
參數 data 指 post 到服務器的數據,該方法返回一個包含兩個元素的(filename, headers)元組,filename 表示保存到本地的路徑,header 表示服務器的響應頭。

  • 下面通過例子來演示一下這個方法的使用,這個例子將一張圖片抓取到本地,保存在此文件夾中,同時顯示下載的進度。
from six.moves import urllib


def Schedule(a, b, c):
    """
    a:已經下載的數據塊
    b:數據塊的大小
    c:遠程文件的大小
    """
    per = 100.0*float(a*b)/float(c)
    if per > 100:
        per = 100
    print("a", a)
    print("b", b)
    print("c", c)
    print(‘{:.2f}%‘
.format(per)) url = ‘https://avatars1.githubusercontent.com/u/14261323?s=400&u=150449ce27748c3b23b5175f8c8342c918ae6aa8&v=4‘ local = ‘mylogo.png‘ filename, _ = urllib.request.urlretrieve(url, local, Schedule) # (‘mylogo.png‘, <http.client.HTTPMessage object at 0x000001FD6491D6D8>) print(filename) # mylogo.png
# a 0 # b 8192 # c 38225 # 0.00% # a 1 # b 8192 # c 38225 # 21.43% # a 2 # b 8192 # c 38225 # 42.86% # a 3 # b 8192 # c 38225 # 64.29% # a 4 # b 8192 # c 38225 # 85.72% # a 5 # b 8192 # c 38225 # 100.00%

Python urllib urlretrieve函數解析