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個
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 事實上是向服務器獲取一些服務器跟客戶端能夠打交道的參數,不與獲取的資源直接相關,因此用得比較少。
**開頭表示可選的,要用命名方法來調入參數
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 能夠捕獲到所有網絡連接錯誤時的異常。