【Python3 爬蟲】04_urllib.request.urlretrieve


urllib模塊提供的urlretrieve()函數,urlretrieve()方法直接將遠程的數據下載到本地

urllib語法

image

參數url:傳入的網址,網址必須得是個字符串

參數filename:指定了保存本地路徑(如果參數未指定,urllib會生成一個臨時文件保存數據。)

參數reporthook:是一個回調函數,當連接上服務器、以及相應的數據塊傳輸完畢時會觸發該回調,我們可以利用這個回調函數來顯示當前的下載進度。

參數data:指 post 到服務器的數據,該方法返回一個包含兩個元素的(filename, headers)元組,filename 表示保存到本地的路徑,header 表示服務器的響應頭。

下面整個例子是將hao6v的頁面抓取到本地

image

# -*- coding:UTF-8 -*-

from urllib import request



"""
urlretrieve參數說明:
1.傳入網址,網址的類型一定是字符串

2.傳入的,本地的網頁保存路徑+文件名

3.一個函數的調用,我們可以隨便定義這個函數,但是必須得有3個參數
    ①到目前為此傳遞的數據塊數量
    ②是每個數據塊的大小,單位是byte,字節
    ③遠程文件的大小
"""

def callback(a1,a2,a3):

    """
        @a1:目前為此傳遞的數據塊數量
        @a2:每個數據塊的大小,單位是byte,字節
        @a3:遠程文件的大小
    """
    download_pg = 100.0*a1*a2/a3
    if download_pg > 100:
        download_pg = 100
    
    print("%.2f%%" %download_pg,)

url = "http://www.hao6v.com/"
local = "C:\\Users\\Administrator\\Desktop\\hellobi.html"
request.urlretrieve(url,local,callback)
image

從上圖我們可以看出,我們已經把網頁成功爬取到本地,在本地桌面可以看到該頁面,使用瀏覽器打開以后跟原頁面一模一樣(如果有CSS,則頁面效果存在差異)

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM