requests模組入門

2021-09-28 11:49:00 字數 3699 閱讀 1473

requests庫是比urllib更加方便實用的http第三方庫,它支援http連線保持和連線池,支援使用cookie保持會話,支援檔案上傳,支援自動響應內容的編碼,支援國際化的url和post資料自動編碼。

requests.request():構造乙個方法,它是支撐以下各方法的基礎方法。

requests.get():獲取html網頁的主要方法,對應於http中的get。

requests.head():獲取html網頁頭資訊的方法,對應於http中的head。

requests.post():向html網頁提交post請求的方法,對應於http中的post。

requests.put():向html網頁提交put請求的方法,對應於http的put。

requests.patch():向html網頁提交區域性修改請求,對應於http中的patch。

requests.delete():向html網頁中提交刪除請求,對應於http中的delete。

1.requests.get()方法

作用:

該方法構造乙個向伺服器請求資源的request物件,並返回乙個包含伺服器資源的response物件。

語法格式:

requests.get(url,params=

none

,**kwargs)

params是url中的額外引數,kwargs表示控制訪問的引數,它有很多,接下來會在用到的時候再做介紹。

注意:

get()方法實際上是用request()方法來封裝,這對其它諸如post、delete等方法同樣適用。即requests庫中這七個方法,除了request()這個基礎方法之外,其它方法的實現都是通過呼叫request()方法來完成的。

呼叫get()方法,實際上內****的:

def

get(url,params=

none

,**kwargs)

:"""sends a get request.

......

......

"""kwargs.setdefault(

'allow_redirects'

,true

)return request(

'get'

,url,params=

none

,**kwargs)

response物件的屬性(設response物件為r):

r.status_code #http請求的返回狀態,200表示成功,404表示失敗

r.text #http請求內容的字串形式

r.content #http請求內容的二進位制形式

r.encoding #從http header中猜測的響應內容編碼方式

encoding是從http header中猜測出的相應內容編碼方式,它可能與html響應內容不相容。該屬性由http頭中的charset屬性指定,如果http header中指定了該屬性,那麼說明該伺服器對它的資源編碼是有要求的,即採用charset指定的編碼。如果header中未指定charset欄位,那麼預設編碼是iso-8859-1,該編碼並不能解析中文。

2.requests.request()方法

語法格式:

requests.request(method,url,

**kwargs)

介紹request()方法主要是想把它的kwargs可選引數說明一下,request()方法知道了,其它方法其實也就不用再介紹了。

其它方法一覽:

requests.get(url,params=none,**kwargs) requests.head(url,**kwargs)

requests.post(url,data=none,json=none,**kwargs)

requests.put(url,data=none,**kwargs)

requests.patch(url,data=none,**kwargs) requests.delete(url,**kwargs)

requests.connectionerror:網路連線錯誤異常,如dns查詢失敗、拒絕連線等。

requests.httperror:http錯誤異常。

requests.urlrequired:url缺失異常。

requests.toomanyredirects:超過最大重定向次數,產生重定向異常。

requests.connecttimeout:連線遠端伺服器超時異常。

requests.timeout:請求url超時異常。

我們要爬取乙個url,利用get()方法之後會得到乙個response物件。response物件包含了我們要爬取的網頁內的所有資訊,因此,學會對response物件進行處理是很重要的。

response物件有乙個比較特殊的方法,即raise_for_status()方法,呼叫該方法後,當狀態碼不是200時會產生requests.httperror異常,通過檢測該異常並派和異常處理語句,爬取網頁的過程就會更加穩定高效。

爬取網頁的通用**框架:

import requests

defgethtmltext

(url)

:try

: r = requests.get(url,timeout=30)

r.raise_for_status(

)#如果不是200,產生的httperror異常將被expect捕捉

return r.text

except

:return

"產生異常!"

if __name__ ==

'__main__'

: url =

''print

(gethtmltext(url)

)

之前在http協議的那篇部落格中只介紹了get、post和head方法,其它的沒有提及,這裡簡單的介紹一下。

http協議對網路資源提供了六種操作方法,分別是:

get:請求獲取url位置上的資源。

head:請求獲取url位置上的資源的響應頭資訊。

post:請求向url位置上的資源後附加新的資料。

put:請求在url位置上儲存乙個新資源,新資源將覆蓋原url位置的資源。

patch:請求區域性更新url位置上的資源。

delete:請求刪除url位置上的資源。

你可以把url看成是和你的計算機上的檔案路徑一樣的東西,只不過本地檔案路徑是讓你找到你的計算機上的資源,而url是幫助找到在網際網路中的資源。

關於post方法:

用post方法提交字典資料的話,會被儲存在網頁的from欄位中。

用post方法提交普通資料的話,會被儲存在網頁的data欄位中。

requests模組的入門使用

requests模組的入門使用 目標掌握requests傳送請求的方法 掌握response物件的基礎屬性 掌握requests傳送帶headers的請求 掌握requests模組傳送帶引數請求 為什麼要重點學習requests模組,而不是urllib requests的底層實現就是urllib r...

爬蟲之requests模組的入門使用

為什麼要重點學習requests模組,而不是urllib requests的底層實現就是urllib requests在python2 和python3中通用,方法完全一樣 requests簡單易用 requests能夠自動幫助我們解壓 gzip壓縮的等 網頁內容 requests模組傳送簡單的ge...

Python模組之requests模組

requests python標準庫中提供了 urllib等模組以供http請求,但是,它的 api 太渣了。它是為另乙個時代 另乙個網際網路所建立的。它需要巨量的工作,甚至包括各種方法覆蓋,來完成最簡單的任務。import urllib.request f urllib.request.urlop...