python-爬蟲基礎篇-urllib庫

**

昨夜西風凋敝樹,獨上高樓,望盡天涯路

衣帶漸寬終不悔,爲伊消得人憔悴。

**
urllib.request模塊:
該模塊是urllib的核心模塊用於發送請求,獲取請求返回結果。

urlopen()發起請求:
response  =urllib.request.urlopen(url,data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
參數解析:
	url:請求地址。
	data:bytes 類型的內容,可通過 bytes()函數轉爲化字節流。它也是可選參數。使用 data 參數,請求方式變成以 POST 方式提交表單。使用標準格式是application/x-www-form-urlencoded
	timeout 參數是用於設置請求超時時間。單位是秒。
	cafile和capath代表 CA 證書和 CA 證書的路徑。如果使用HTTPS則需要用到
	context參數必須是ssl.SSLContext類型,用來指定SSL設置
	cadefault參數已棄用。
	
	urlopen()只能發起的簡單的請求,實際使用的價值低,瞭解即可。爲了能發起相對較複雜的請求,需要用到

Request()方法,用於構建Request實例,然後給openurl傳參,訪問目標地址。

.Request()發起請求:
request= urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

參數解析:
url:請求地址
data:同urlopen()方法一致。
headers:用戶設置http請求頭。是一個字典。添加方法除了在Request()中間添加,可以在Request實例的 add_header() 方法來添加請求頭。
origin_req_host 參數指的是請求方的 host 名稱或者 IP 地址
unverifiable 參數表示這個請求是否是無法驗證的,默認值是False。意思就是說用戶沒有足夠權限來選擇接收這個請求的結果。例如我們請求一個HTML文檔中的圖片,但是我們沒有自動抓取圖像的權限,我們就要將 unverifiable 的值設置成 True。
method 參數指的是發起的 HTTP 請求的方式,有 GET、POST、DELETE、PUT等

Request與urlopen的簡單運用實例:
import urllib.request
url = "http://tieba.baidu.com"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"}
#構建request實例,
request = urllib.request.Request(url,headers=headers)
#也可以通過下面這種方式進行設置header
#request = urllib.request.Request(url)
#request.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36")
response = urllib.request.urlopen(request,timeout=2.0)
print(response)
print(response.read().decode('utf-8'))

**

request的代理設置

**

request代理設置
#使用ProxyHandler 進行代理配置。
proxy_handle = urllib.request.ProxyHandler({
    'http': '1.202.193.26:59212'
})
#使用build_opener創創建一個OpenerDirector 對象
opener = urllib.request.build_opener(proxy_handle)

#創建一個自定義的OpenerDirector 對象,此時的OpenerDirector爲全局變量
urllib.request.install_opener(opener)
#使用自定義出來的OpenerDirector 對象訪問地址(此時使用的代理地址。)
response = urllib.request.urlopen(request)

HTTPResponse

使用 urllib.request.urlopen() 或者 opener.open(url) 返回結果是一個 http.client.HTTPResponse 對象。
它具有 msg、version、status、reason、debuglevel、closed等屬性
read()、readinto()、getheader(name)、getheaders()、fileno()等函數。

request常用handler類

• ProxyHandler:爲請求設置代理
• HTTPCookieProcessor:處理 HTTP 請求中的 Cookies
• HTTPDefaultErrorHandler:處理 HTTP 響應錯誤。
• HTTPRedirectHandler:處理 HTTP 重定向。
• HTTPPasswordMgr:用於管理密碼,它維護了用戶名密碼的表。
• HTTPBasicAuthHandler:用於登錄認證,一般和 HTTPPasswordMgr 結合使用。

#後期完善

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章