urllib3是乙個功能強大,條理清晰,用於http客戶端的python庫。許多python的原生系統已經開始使用urllib3。urllib3提供了很多python標準庫urllib裡所沒有的重要特性:
一、get請求
urllib3主要使用連線池進行網路請求的訪問,所以訪問之前我們需要建立乙個連線池物件,如下所示:
帶引數的get
經檢視原始碼:
def re程式設計客棧quest(self, method, url, fields=none, headers=none, **urlopen_kw):
request請求的返回值是
我們可以通過dir()檢視其所有的屬性和方法。
dir(r)
直擷取了一部分
#'data', 'decode_content', 'enforce_content_length', 'fileno', 程式設計客棧'flush', 'from_httplib',
# 'get_redirect_location', 'getheader', 'getheaders', 'headers', 'info', 'isatty',
# 'length_remaining', 'read', 'read_chunked', 'readable', 'readinto', 'readline',
# 'readlines', 'reason', 'release_conn', 'retries', 'seek', 'seekable', 'status',
# 'stream', 'strict', 'supports_chunked_reads', 'tell', 'truncate', 'version', 'writable',
# 'writelines']
二、post請求
可以看到很簡單,只是第乙個引數get換成了post。
並且引數不需要再像urllib一樣轉換成byte型了。
三、設定headers
四、設定**
import urllib3
url = ""
headers =
proxy = urllib3.proxymanager('',headers = headers)
r = proxy.request('get',url+"/ip")
print(r.data.decode())
五、當請求的引數為json
在發起請求時,可以通過定義body 引數並定義headers的content-type引數來傳送乙個已經過編譯的json資料
六、上傳檔案
#元組形式
#二進位制形式
七、超時設定
# 1全域性設定超時
# 2在request裡設定
八、重試和重定向
import urllib3
http =程式設計客棧 urllib3.poolmanager()
#重試r = http.request('post','/post',retries = 5) #請求重試測次數為5次 ,預設為3ci
print(r.retries) #retry(total=5, connect=none, read=none, redirect=0, status=none)
#關閉重試
http.request('post','/post',retries = false) #請求重試測次數為5次 ,預設為3ci
#302不是異常
九、urllib3 本身設定了https的處理,但是有警告
雖然可以請求,但是報如下警告:
禁用警告:
import urllib3
urllib3.disable_warnings() #禁用各種警告
urllib3很強大,但是並沒有requests好用。了解為主。
本文標題: python爬蟲之urllib3的使用示例
本文位址: /jiaoben/python/232442.html
python爬蟲之urllib 二
urllib.error可以接收urllib.request產生的異常,urllib.error有三個方法,如下 urlerror是oserror的乙個子類,httperror是urlerror的乙個子類,伺服器上http的響應會返回乙個狀態碼,根據這個http狀態碼,我們可以知道我們的訪問是否成功...
python爬蟲之urllib 四
每個 都會定義robots.txt 檔案,這個檔案可以告訴網路爬蟲爬取該 時存在哪些限制。作為良好網民以及其他人利益,一般上遵從這些限制。如何檢視這個檔案?可以通過在目標 站點或網域名稱後面加上 robots.txt 進行訪問。例如 目標 站點 的 robots.txt 檔案就是 robots.tx...
Python爬蟲之urllib模組2
python爬蟲之urllib模組2 pg 55,乙個待畢業待就業的二流大學生。看了一下上一節的反饋,有些同學認為這個沒什麼意義,也有的同學覺得太簡單,關於 beautifulsoup 和lxml 獲取後面的鏈結我們能不能如法炮製呢,我們先來試試。我們把 寫成下面那樣 然後我們現在來試試 結果我們發...