一、urlretrieve函數的基本用法
Python作為一門強大的編程語言,為我們提供了各種各樣的庫,其中urllib庫是Python內置的一個HTTP客戶端庫,可以模擬瀏覽器請求,獲取網頁數據,進而實現爬蟲操作。其中urllib.request模塊下的urlretrieve函數可以用來下載網絡資源,其基本用法如下:
import urllib.request
url = 'http://www.example.com/example.jpg' # 資源的URL地址
filename = 'example.jpg' # 文件的保存名稱
urllib.request.urlretrieve(url, filename) # 下載資源並保存到本地
其中,url參數為資源的URL地址,最好包含協議頭(http或https),filename參數為保存文件的名稱,下載完成後就可以在本地看到該文件了。
二、urlretrieve函數的參數詳解
urlretrieve函數還有其他的一些可選的參數,下面是一些常用的參數的詳解:
1. reporthook參數
reporthook參數可以用來設置一個回調函數(callback function),用於監視下載進度。這個回調函數接受三個參數:目前已經傳輸的數據塊數、每塊數據的大小、總大小。我們可以根據這些信息打印出下載進度條等信息。
import urllib.request
import os
url = 'http://www.example.com/example.jpg'
filename = 'example.jpg'
path = os.path.join(os.getcwd(), 'downloads') # 下載文件的保存路徑
if not os.path.exists(path): # 檢查路徑是否存在,不存在就新建一個
os.mkdir(path)
urllib.request.urlretrieve(url, os.path.join(path, filename),
reporthook=lambda blocknum, blocksize, totalsize:
print('\rdownloading %.2f%%' % (blocknum * blocksize * 100 / totalsize)),
data=None) # 設置回調函數
以上代碼中的reporthook參數中的lambda函數將當前下載進度實時輸出,在後面的data參數中可以設置數據塊的大小,默認為8192位元組。
2. data參數
data參數也是一個回調函數,可以用來獲取服務器的響應(response)頭部信息。這裡的響應頭部包括一些瀏覽器支持的HTTP頭部,可以根據需求選擇讀取哪些信息。函數的調用方式與reporthook類似。
import urllib.request
url = 'http://www.example.com'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) # 添加請求頭
with urllib.request.urlopen(req) as response:
headers = response.info()
urllib.request.urlretrieve(url, 'index.html', data=lambda *args, **kwargs: headers)
print(headers)
以上代碼中將發送一個HTTP請求,使用with語句進行響應處理,然後將響應頭部信息保存到本地文件中。
3. context參數
context參數可以用來訪問HTTPS網站,它可以是一個ssl.SSLContext對象,也可以是None。ssl.SSLContext對象可以用來存儲證書驗證信息和協議選項,從而實現安全的HTTPS連接。如果不設置該參數,Python會使用默認的上下文信息,但可能會遇到安全問題。
import urllib.request
import ssl
url = 'https://www.example.com'
ssl._create_default_https_context = ssl._create_unverified_context # 全局設置不進行證書驗證
urllib.request.urlretrieve(url, 'index.html', context=ssl._create_unverified_context()) # 使用ssl._create_unverified_context()上下文
以上代碼中使用了ssl._create_default_https_context()創建了一個默認的SSL上下文對象,然後給它設置了不進行證書驗證的選項,最後將其傳入urlretrieve的context參數中,從而實現了訪問HTTPS網站的目的。
三、小結
urlretrieve函數是Python爬蟲操作中必不可少的一個函數,其能夠實現下載網絡資源的功能。在使用urlretrieve函數時,我們需要設置一些參數來實現自己的需求。本文介紹了urlretrieve函數的基本用法和常見的參數設置方法,相信大家對這個函數的使用已經有了更深入的了解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/289174.html