Python學習之request庫的使用


一、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學習筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM