【Requests庫】{4} ——Requests庫主要方法解析

Requests庫的7個主要方法:

方法 說明
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

requests.request(method, url, **kwargs)

method:請求方式,對應get/put/post等7種
url:擬獲取頁面的url鏈接
**kwargs:控制訪問的參數,共13個

  • method:請求方式

r = requests.request(‘GET’, url, **kwargs)
r = requests.request(‘HEAD’, url, **kwargs)
r = requests.request(‘POST’, url, **kwargs)
r = requests.request(‘PUT’, url, **kwargs)
r = requests.request(‘PATCH’, url, **kwargs)
r = requests.request( ‘delete’, url, **kwargs)
r = requests.request(‘OPTIONS’, url, **kwargs)

OPTIONS 事實上是向服務器獲取一些服務器跟客戶端能夠打交道的參數,不與獲取的資源直接相關,因此用得比較少。

  • **kwargs:控制訪問的參數,均爲可選項

**開頭表示可選的,要用命名方法來調入參數

params:字典或字節序列,作爲參數增加到url中

通過這樣的一個參數,我們可以把一些鍵值對增加到 URL 中,使得 URL 再去訪問時,不止訪問這個資源,而同時帶入了一些參數,服務器可以接受這些參數,並根據這些參數篩選部分資源返回回來。

data:字典、字節序列或文件對象,作爲Request的內容

不存到URL鏈接裏,而是URL鏈接對應的位置那裏。

json:JSON格式的數據,作爲Request的內容

headers:字典,HTTP定製頭

也就是說我們可以模擬任何我們想模擬的瀏覽器向服務器發起訪問,而這種模擬瀏覽器的方法就是在headers字段中來實現。

cookies:字典或CookieJar,Request中的cookie

auth:元組,支持HTTP認證功能

這兩個都是requests的高級功能

files:字典類型,傳輸文件

timeout:設定超時時間,秒爲單位

proxies:字典類型,設定訪問代理服務器,可以增加登錄認證

防止逆追蹤

allow redirects:True/False,默認爲 True,重定向開關

stream:True/False,默認爲 True,獲取內容立即下載開關

verify:True/False,默認爲 True,認證SSL證書開關

cert:本地 SSL證書路徑

data、json、headers要靈活掌握,訪問網頁時適當使用。


requests.get(url, params=None, **kwargs)

url:擬獲取頁面的 urI鏈接
params:url中的額外參數,字典或字節流格式,可選
kwargs:12個控制訪問的參數

最通常的方法是通過 r=request.get(url) 構造一個向服務器請求資源的 url對象,這個對象是 Request庫內部生成的:

r 返回的是一個包含服務器資源的 Response對象,包含從服務器返回的所有的相關資源。

url 是通過 http協議存取資源的一個路徑,它就像我們電腦裏面的一個文件的路徑一樣


requests.head(url, **kwargs)

url:擬獲取頁面的urI鏈接
**kwargs:13個控制訪問的參數


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

url:擬更新頁面的url鏈接
data:字典、字節序列或文件,Request的內容
json:JSON格式的數據,Request的內容
**kwargs:11個控制訪問的參數


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

url:擬更新頁面的urI鏈接
data:字典、字節序列或文件,Request的內容
**kwargs:12個控制訪問的參數


requests.patch(url, data=None, **kwargs)

url:擬更新頁面的url鏈接
data:字典、字節序列或文件, Request的內容
**kwargs:12個控制訪問的參數


requests.delete(url, **kwargs)

url:擬刪除頁面的url鏈接
**kwargs:13個控制訪問的參數


get方法是最常用的方法,因爲在 HTTP協議中,向某一個 URL 去提交資源的功能,在服務器上是嚴格受控的,這裏邊有很大的安全問題。如果某一個 URL 是允許任何用戶無限制地向上傳輸相關資源的,那麼就會出現很多問題。
比如說,我們可以用大量的垃圾信息,去使得服務器的資源消耗完,甚至我們可以去傳輸一些不可控的、或者惡意的內容到某一個 URL 上,這都是對網絡空間不負責任的表現。

因此,在使用requests庫的時候,最常用get方法,也就是說我們通過get方法來爬取一些內容,並且部分地向服務器提交一些內容。而對於某些特別大的URL鏈接,用head獲取資源概要。重點掌握 get 和 head。

服務器是計算機的一種,它比普通計算機運行更快、負載更高、價格更貴。
服務器在網絡中爲其它客戶機(如PC機、智能手機、ATM等終端甚至是火車系統等大型設備)提供計算或者應用服務。
服務器具有高速的CPU運算能力、長時間的可靠運行、強大的I/O外部數據吞吐能力以及更好的擴展性。
根據服務器所提供的服務,一般來說服務器都具備承擔響應服務請求、承擔服務、保障服務的能力。
服務器作爲電子設備,其內部的結構十分的複雜,但與普通的計算機內部結構相差不大,如:cpu、硬盤、內存,系統、系統總線等。


網絡連接有風險,異常處理很重要

因此要用 try、except 的方式來保證網絡連接的異常能夠被有效處理。

核心的一行代碼:

r.raise_for_status() # Response對象的raise_for_status()函數

它的作用是:如果返回的對象的狀態碼不是200,它將產生一次異常,所以 except 能夠捕獲到所有網絡連接錯誤時的異常。

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