1. 程式人生 > >【Python3 爬蟲】04_urllib.request.urlretrieve

【Python3 爬蟲】04_urllib.request.urlretrieve

ont utf-8 html HA 觸發 request 效果 數量 class

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

urllib語法

技術分享圖片

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

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

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

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

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

技術分享圖片

# -*- 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)
技術分享圖片

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

技術分享圖片

【Python3 爬蟲】04_urllib.request.urlretrieve