欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中requests模塊的使用方法

 更新時(shí)間:2015年04月08日 11:31:33   作者:huaweitman  
這篇文章主要介紹了python中requests模塊的使用方法,實(shí)例分析了requests模塊的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了python中requests模塊的使用方法。分享給大家供大家參考。具體分析如下:

在HTTP相關(guān)處理中使用python是不必要的麻煩,這包括urllib2模塊以巨大的復(fù)雜性代價(jià)獲取綜合性的功能。相比于urllib2,Kenneth Reitz的Requests模塊更能簡(jiǎn)約的支持完整的簡(jiǎn)單用例。

簡(jiǎn)單的例子:

想象下我們?cè)噲D使用get方法從http://example.test/獲取資源并且查看返回代碼,content-type頭信息,還有response的主體內(nèi)容。這件事無論使用urllib2 或者Requests都是很容易實(shí)現(xiàn)的。

urllib2 

>>> import urllib2 
>>> url = 'http://example.test/' 
>>> response = urllib2.urlopen(url)
>>> response.getcode() 
200 
>>> response.headers.getheader('content-type') 
'text/html; charset=utf-8'
>>> response.read() 
'Hello, world!'

Requests

>>> import requests 
>>> url = 'http://example.test/' 
>>> response = requests.get(url) 
>>> response.status_code 
200 
>>> response.headers['content-type']
'text/html; charset=utf-8'
>>> response.content 
u'Hello, world!'

這兩種方法很相似,相對(duì)于urllib2調(diào)用方法讀取response中的屬性信息,Requests則是使用屬性名來獲取對(duì)應(yīng)的屬性值。
兩者還有兩個(gè)細(xì)微但是很重要的差別:

1 Requests 自動(dòng)的把返回信息有Unicode解碼
2 Requests 自動(dòng)保存了返回內(nèi)容,所以你可以讀取多次,而不像urllib2.urlopen()那樣返回的只是一個(gè)類似文件類型只能讀取一次的對(duì)象。

第二點(diǎn)是在python交互式環(huán)境下操作代碼很令人討厭的事情

一個(gè)復(fù)雜一點(diǎn)的例子:

現(xiàn)在讓我們嘗試下復(fù)雜點(diǎn)得例子:使用GET方法獲取http://foo.test/secret的資源,這次需要基本的http驗(yàn)證。使用上面的代碼作為模板,好像我們只要把urllib2.urlopen() 到requests.get()之間的代碼換成可以發(fā)送username,password的請(qǐng)求就行了

這是urllib2的方法:

>>> import urllib2
>>> url = 'http://example.test/secret'
>>> password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
>>> password_manager.add_password(None, url, 'dan', 'h0tdish')
>>> auth_handler = urllib2.HTTPBasicAuthHandler(password_manager) 
>>> opener = urllib2.build_opener(auth_handler)
>>> urllib2.install_opener(opener)
>>> response = urllib2.urlopen(url)
>>> response.getcode()
200 
>>> response.read()
'Welcome to the secret page!'

一個(gè)簡(jiǎn)單的方法中實(shí)例化了2個(gè)類,然后組建了第三個(gè)類,最后還要裝載到全局的urllib2模塊中,最后才調(diào)用了urlopen,那么那兩個(gè)復(fù)雜的類是什么的
迷惑了嗎,  這里所有urllib2的文檔 http://docs.python.org/release/2.7/library/urllib2.html
那Requests是怎么樣解決同樣的問題的呢?

Requests

>>> import requests 
>>> url = 'http://example.test/secret' 
>>> response = requests.get(url,auth=('dan','h0tdish'))
>>> response.status_code 
200 
>>> response.content 
u'Welcome to the secret page!' 

只是在調(diào)用方法的時(shí)候增加了一個(gè)auth關(guān)鍵字函數(shù)
我敢打賭你不用查文檔也能記住。

錯(cuò)誤處理 Error Handling

Requests對(duì)錯(cuò)誤的處理也是很非常方面。如果你使用了不正確的用戶名和密碼,urllib2會(huì)引發(fā)一個(gè)urllib2.URLError錯(cuò)誤,然而Requests會(huì)像你期望的那樣返回一個(gè)正常的response對(duì)象。只需查看response.ok的布爾值便可以知道是否登陸成功。

>>> response = requests.get(url,auth=('dan','wrongPass'))
>>> response.ok 
False 

其他的一些特性:

* Requests對(duì)于HEAD, POST, PUT, PATCH, 和 DELETE方法的api同樣簡(jiǎn)單
* 它可以處理多部分上傳,同樣支持自動(dòng)轉(zhuǎn)碼
* 文檔更好
* 還有更多

Requests 是很好的,下次需要使用HTTP時(shí)候可以試試。

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論