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

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会维持高利润,也会维持竞争局面,国外的竞争不是打死对方的那种。你看日本有尼康,佳能,索尼,都做相机,大家都过得很滋润。别看一堆厂,其实真正控制的是后面的那几个财团——有些竞争对手,后面其实是一家人。

你可能感兴趣的:(request)