response = urllib.request.urlopen(req)urlopen缺點:不能新增ip池(不能使用**ip);不能使用cookie
所以要重寫urlopen,自定義處理器httpshandler:
importurllib.request# 處理器(處理https,也能處理http協議)
# 開啟器
opener = urllib.request.build_opener(handler)
headers = {
url = ''
# 新增請求
req = urllib.request.request(url,
headers=headers)
"""通過開啟器開啟網頁方式
open的引數:fullurl, data=none, timeout
"""# response = opener.open(req)
# print(response.read().decode('utf-8'))
"""以下是安裝全域性開啟器來開啟網頁方式
return opener.open(url, data, timeout):
用response = urllib.request.urlopen(req)開啟網頁,本質還是response = opener.open(req)
"""# 安裝全域性開啟器
urllib.request.install_opener(opener)
# 開啟網頁
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'))
Handler處理器的使用
importurllib.request importurllib.parse request封裝 對url的高階定製opener封裝 對請求過程的高階定製urllib.request.urlopen opener封裝需要依賴於乙個handler物件handle是乙個類,提供httphandle h...
爬蟲 urllib handler處理器
為什麼要學習handler?如果定製更高階的請求頭,隨著業務邏輯的複雜請求物件的定製已經滿足不了我們的需求 動態cookie和 不能使用請求物件的定製 handler的基本使用 import urllib.request url headers request urllib.request.requ...
Handler處理器 自定義Opener
在請求裡面,還有兩個高階功能,乙個是 乙個是cookie,學習handler和opener使用的步驟 見 concent 報錯 unicodeencodeerror gbk codec can t encode character xbb in position 30892 illegal mult...