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

  • 相关阅读:
    设计模式学习--Singleton
    Add Binary
    简洁的ios小界面
    第一节、介绍
    魅族MX5和努比亚布拉格手机參数对照
    python 深浅拷贝 进阶
    为什么要重写equals()方法与hashCode()方法
    在Myeclipse buildpath 加server lib
    push本地代码到github出错
    mysql事务,select for update,及数据的一致性处理
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3034491.html
Copyright © 2020-2023  润新知