一、requests庫簡介
requests庫是一個簡潔的能夠簡單地處理HTTP請求的第三方庫,它的最大優點是程序編寫過程更接近正常URL訪問過程。
另外,request庫支持非常豐富的鏈接訪問功能,包括國際域名和URL獲取、HTTP長連接和連接緩存、HTTP會話和Cookie保持、瀏覽器使用風格的SSL驗證、基本的摘要驗證、有效鍵值對Cookie記錄、
自動解壓縮、自動內容解碼、文件分塊上傳、HTTP(s)代理功能、連接超時處理、數據流下載等。
二、request庫的使用
1.request庫中常用的網頁請求函數
get(url[,timeout=n]) 對應於HTTP的GET方式,獲取網頁最常用的方法,可以增加timeout=n參數,設定每次請求超時時間為n秒
post(url,data={'key':'value'}) 對應於HTTP的POST方式,其中字典用於傳遞客戶數據
delete(url) 對應於HTTP中的DELETE方式
haed(url) 對應於HTTP中的HEAD方式
options(url) 對應於HTTP中的OPTIONS方式
put(url,data={'key':'value'}) 對應於HTTP中的PUT方式,其中字典用於傳遞客戶數據
get()是獲取網頁最常用的方法,在調用requests.get()函數后,返回網頁內容會保存成為一個Response對象,其中get()函數的參數url鏈接必須采用HTTP或者HTTPS的方式訪問。
如下:

2.和瀏覽器交互過程一樣,requests.get()代表請求過程,它返回的Response對象代表響應,返回內容作為一個對象更便於操作,下面介紹Response對象的屬性:
status_code HTTP請求的返回狀態,整數200表示連接成功,404表示失敗
text HTTP響應內容的字符串形式,即url對應的頁面內容
encoding HTTP響應內容的編碼方式
content HTTP響應內容的二進制形式
(1)status_code屬性返回請求HTTP后的狀態,在處理數據之前要先判斷狀態情況,如果請求未被響應,需要終止處理內容。text屬性是請求的頁面內容,以字符串形式展示。encoding屬性非常重要,
它給出了返回頁面內容的編碼方式,可以通過對encoding屬性值更改編碼方式,以便於處理中文字符。content屬性是頁面內容的二進制形式。
如下獲取文本:

如下改變編碼類型:

(2)Response對象的方法:
json 如果HTTP響應內容包括JSON格式數據,則該方法解析JSON數據
raise_for_status 如果不是200,則產生異常
json()方法能夠在HTTP響應內容中解析存在的JSON數據,這將帶來解析HTTP的便利。raise_for_status()方法能在非成功響應內容后產生異常,即只要返回的請求狀態status_code不是200,
這個方法就會產生一個異常,用於try-except語句。使用異常處理語句可以避免設置一堆復雜的if語句,只需要在收到響應時調用這個方法,就可以避開狀態200以外的各種意外情況。
requests會產生幾種異常。當遇到網絡問題時,如DNS查詢失敗、拒絕連接等,requests會拋出ConnectionError異常;遇到HTTP響應無效時,requests則會拋出HTTPError異常;若請求url超時,則拋出Timeout異常;
若請求超過了設定的最大重向次數,則會拋出一個TooManyRedirects異常。
一個獲取一個網頁內容的函數代碼:

僅用於Python學習筆記
