我們在使用python爬蟲時,需要模擬發起網絡請求,主要用到的庫有requests庫和python內置的urllib庫,一般建議使用requests,它是對urllib的再次封裝,它們使用的主要區別:
requests可以直接構建常用的get和post請求並發起,urllib一般要先構建get或者post請求,然后再發起請求。
import requests
Response_get = requests.get(url, params=None, **kwargs
Response_post = requests.post(url, data=None, json=None, **kwargs)
上面請求后得到的是requests.models.Response對象,需要處理后才能得到我們需要的信息
Response_get.text 得到的是str類型
Response_get.content 得到的是bytes類型,需要進行解碼Response_get.content.decode(),相當於Response_get.text
Response_get.json() 得到的是JSON數據類型
一般我們最簡單的get請求是requests.get(url),但是我們可以對請求進行定制,比如requests.get(url,headers=headers)
headers里面可以定制User-Agent和cookie
簡單的post請求是requests.post(url),我們也可以requests.post(url,data),其中data可以是列表,字典,JSON等類型
import urllib.request
req = urllib.request.Request(self, url, data=None, headers={},origin_req_host=None,unverifiable=False,method=None)
Response_request = urllib.request.urlopen(req)
Response = urllib.request.urlopen(url, data=None, timeout=1, cafile=None, capath=None, cadefault=False, context=None)
urllib.request 模塊提供了最基本的構造 HTTP 請求的方法,利用它可以模擬瀏覽器的一個請求發起過程。
# 同時它還帶有處理 authenticaton (授權驗證), redirections (重定向), cookies (瀏覽器Cookies)以及其它內容。
# context 參數,它必須是 ssl.SSLContext 類型,用來指定 SSL 設置。cafile 和 capath 兩個參數是指定CA證書和它的路徑,這個在請求 HTTPS 鏈接時會有用。
# cadefault 參數現在已經棄用了,默認為 False 。
# 它是一個 HTTPResposne 類型的對象,它主要包含的方法有 read() 、 readinto() 、getheader(name) 、 getheaders() 、 fileno() 等函數
# 和 msg 、 version 、 status 、 reason 、 debuglevel 、 closed 等屬性。 得到這個對象之后,賦值為 response ,
# 然后就可以用 response 調用這些方法和屬性,得到返回結果的一系列信息。
# 例如 response.read() 就可以得到返回的網頁內容, response.status 就可以得到返回結果的狀態碼,如200代表請求成功,404代表網頁未找到等。
簡單的get請求是urllib.request.urlopen(url),其中url可以是一個鏈接,也可以是一個請求,
所以我們定制請求頭需要通過urllib.request.Request(url,headers=headers)進行定制,然后當成url傳入到request.urlopen()
————————————————
版權聲明:本文為CSDN博主「cacho_37967865」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/sinat_37967865/article/details/85392207