在http相關處理中使用python是不必要的麻煩,這包括urllib2模組以巨大的複雜性代價獲取綜合性的功能。相比於urllib2,kenneth reitz的requests模組更能簡約的支援完整的簡單用例。
簡單的例子:
想象下我們試圖使用get方法從獲取資源並且檢視返回**,content-type頭資訊,還有response的主體內容。這件事無論使用urllib2 或者requests都是很容易實現的。
urllib2
>>> import urllib2
>>> url = ''
>>> response = urllib2.urlopen(url)
>>> response.getcode()
200
>>> response.headers.getheader('content-type')
'text/html; charse'
>>> response.read()
'hello, world!'
requests
>>> import requests
>>> url = ''
>>> response = requests.get(url)
>>> response.status_code
200
>>> response.headers['content-type']
'text/html; charset=utf-8'
>>> responsldbipjrpewe.content
u'hello, world!'
這兩種方法很相似,相對於urllib2呼叫方法讀取response中的屬性資訊,requests則是使用屬性名來獲取對應的屬性值。
兩者還有兩個細微但是很重要的差別:
1 requests 自動的把返回資訊有unicode解碼
2 requests 自動儲存了返回內容,所以你可以讀取多次,而不像urllib2.urlopen()那樣返回的只是乙個類似檔案型別只能讀取一次的物件。
第二點是在python互動式環境下操作**很令人討厭的事情
乙個複雜一點的例子:
現在讓我們嘗試下複雜點得例子:使用get方法獲取的資源,這次需要基本的http驗證。使用上面的**作為模板,好像我們只要把urllib2.urlopen() 到requests.get()之間的**換成可以傳送username,password的請求就行了
這是urllib2的方法:
乙個簡單的方法中例項化了2個類,然後組建了第三個類,最後還要裝載到全域性的urllib2模組中,最後才呼叫了urlopen,那麼那兩個複雜的類是什麼的
迷惑了嗎, 這裡所有urllib2的文件
那requests是怎麼樣解決同樣的問題的呢?
requests
>>> import requests
>>> url = 'secret'
&>> response = requests.get(url,auth=('dan','h0tdish'))
>>> response.status_code
200
>>> response.content
u'welcome to the secret page!'
只是在呼叫方法的時候增加了乙個auth關鍵字函式
我敢打賭你不用查文件也能記住。
錯誤處理 error handling
requests對錯誤的處理也是很非常方面。如果你使用了不正確的使用者名稱和密碼,urllib2會引發乙個urllib2.urlerror錯誤,然而requests會像你期望的那樣返回乙個正常的response物件。只需檢視response.ok的布林值便可以知道是否登陸成功。
>>> response = requests.get(url,auth=('dan','wrongpass'))
>>> response.ok
false
其他的一些特性:
* requests對於head, post, put, patch, 和 delete方法的api同樣簡單
* 它程式設計客棧可以處理多部分上傳,同樣支援自動轉碼
* 文件更好
* 還有更多
requests 是很好的,下次需要使用http時候可以試試。
本文標題: python中requests模組的使用方法
本文位址:
python中的requests模組
requests是用python實現的第三方http庫。post介面 結果 還有乙個簡單的示例 更新 傳送請求與傳遞引數 帶引數的get請求 impor requests r requests.get 最基本的get請求 print r.status code 獲取返回狀態碼 print r.url...
python中requests的安裝
本文主要說明了在自帶有pip的python中如何安裝requests。pip在大部分2.7或者3以上的python都已經自帶了。那麼如何判斷是否自帶有pip 在命令列 win r 中輸入 python m pip version 出現如下圖的提示,則表示自帶有pip 準備好pip之後,如果pytho...
python中requests小技巧
關於 python requests 在使用中,總結了一些小技巧把,記錄下。1 保持請求之間的cookies,我們可以這樣做。2 請求時,會加上headers,一般我們會寫成這樣 唯一不便的是之後的 每次都需要這麼寫,顯得臃腫,所以我們可以這樣 3 預設requests請求失敗後不會重試,但是我們跑...