您的位置:首页 > 编程语言 > Python开发

方法返回[Python—英文]Request --有用的python模块

2013-04-21 21:15 281 查看
PS:今天上午,非常郁闷,有很多简略基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!

ref: http://dancallahan.info/journal/python-requests/
Title: 用有的python块模

在HTTP关相处置中应用python是不必要的费事,这括包urllib2块模以伟大的庞杂性价值取获综合性的功能。比拟于urllib2,Kenneth Reitz的Requests块模更能约简的持支整完的简略用例。

简略的例子:

设想下我们试图应用get方法从http://example.test/取获源资并且查看返回代码,content-type头信息,还有response的体主内容。这件事无论应用urllib2 或者Requests都是很轻易现实的。

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!'

这两种方法很似相,于对相urllib2调用方法读取response中的属性信息,Requests则是应用属性名来取获对应的属性值。

两者还有两个微细但是很主要的差异:

1 Requests 动自的把返回信息有Unicode解码

2 Requests 动自保存了返回内容,所以你可以读取多次,而不像urllib2.urlopen()那样返回的只是一个似类文件类型只能读取一次的象对。

第二点是在python交互式环境



操作代码很令人讨厌的事件

一个庞杂一点的例子:

每日一道理

天又快黑了,这座忙碌的城市又将入睡,让这劳累的“身躯”暂别白日的辛勤,让它入睡,陪伴着城市中的人们进入梦乡。当空的弯月正深情地注视着这座城市与城市中的人们,看着家家户户的灯渐渐熄灭,它在床头悄悄奏响“明月曲”……

当初让我们实验下庞杂点得例子:应用GET方法取获http://foo.test/secret的源资,此次须要基本的http验证。应用下面的代码作为板模,像好我们只要把urllib2.urlopen() 到requests.get()之间的代码换成可以发送username,password的求请了行就

这是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!'

一个简略的方法中实例化了2个类,然后组建了第三个类,最后还要装载到全局的urllib2块模中,最后才调用了urlopen,那么那两个庞杂的类是什么的

困惑了吗, 这里全部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!'

只是在调用方法的时候增加了一个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时候可以试试。

链接:
http://python-requests.org/ http://pypi.python.org/pypi/requests
文章结束给大家分享下程序员的一些笑话语录:

不会,Intel会维持高利润,也会维持竞争局面,国外的竞争不是打死对方的那种。你看日本有尼康,佳能,索尼,都做相机,大家都过得很滋润。别看一堆厂,其实真正控制的是后面的那几个财团——有些竞争对手,后面其实是一家人。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: