• python 网络请求类库 requests 使用


    python 网络请求类库 requests 使用

    requests是 为python封装的强大 REST 操作类库

    1: 安装,请使用 pip,或是 easy_install 工具

         sudo pip install requests

    2: 使用 先

        import requests

       

    #coding=utf-8
    #要加上编码设置,不然编译不通过,这是python2的问题
    
    '''
    Created on 2014年4月22日
    
    @author: dev.keke@gmail.com
    '''
    
    #测试 request库环境,python2.7环境
    
    import requests   
    
    #GET 请求
    r = requests.get('http://httpbin.org/get')
    print 'GET:',r.text
    
    #POST 请求
    r = requests.post('http://httpbin.org/post')
    print 'POST',r.text
    
    #GET 带参数请求,
    pararms = {'key1':'value1','key2':'value2'}
    r = requests.get('http://httpbin.org/get',params=pararms)
    print 'GET Pararms',r.url,r.text
    
    #POST 带参数请求,
    parar={'key1':'value1','key2':'value2'}
    r = requests.post('http://httpbin.org/post',params = parar)
    print 'POST Pararms:',r.url,r.text
    
    #改变响应数据的编码 
    r.encoding = 'ISO-8859-1'
    
    #取得响应的二进制数据
    r.content
    
    #取得json数据,如果数据json处理失败,会抛出异常
    r.json()
    
    #响应原始数据内容,注意设置 r = requests.get('https://github.com/timeline.json', stream=True) tream = True
    r.raw #原数据内容

    3:一些更为复杂的操作

       定制请求头

    >>> import json
    >>> url = 'https://api.github.com/some/endpoint'
    >>> payload = {'some': 'data'}
    >>> headers = {'content-type': 'application/json'}
    
    >>> r = requests.post(url, data=json.dumps(payload), headers=headers)

      复杂的post请求

    >>> payload = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.post("http://httpbin.org/post", data=payload)
    >>> print r.text
    {
      ...
      "form": {
        "key2": "value2",
        "key1": "value1"
      },
      ...
    }
    >>> import json
    >>> url = 'https://api.github.com/some/endpoint'
    >>> payload = {'some': 'data'}
    
    >>> r = requests.post(url, data=json.dumps(payload))

    上传文件

    >>> url = 'http://httpbin.org/post'
    >>> files = {'file': open('report.xls', 'rb')}
    
    >>> r = requests.post(url, files=files)
    >>> r.text
    {
      ...
      "files": {
        "file": "<censored...binary...data>"
      },
      ...
    }
    >>> url = 'http://httpbin.org/post'
    >>> files = {'file': ('report.xls', open('report.xls', 'rb'))}
    
    >>> r = requests.post(url, files=files)
    >>> r.text
    {
      ...
      "files": {
        "file": "<censored...binary...data>"
      },
      ...
    }
    >>> url = 'http://httpbin.org/post'
    >>> files = {'file': ('report.csv', 'some,data,to,send
    another,row,to,send
    ')}
    
    >>> r = requests.post(url, files=files)
    >>> r.text
    {
      ...
      "files": {
        "file": "some,data,to,send\nanother,row,to,send\n"
      },
      ...
    }

    响应状态码:

    内置状态码:

    >>> r.status_code == requests.codes.ok
    True

    根据状态码抛出异常

    >>> bad_r = requests.get('http://httpbin.org/status/404')
    >>> bad_r.status_code
    404
    
    >>> bad_r.raise_for_status()
    Traceback (most recent call last):
      File "requests/models.py", line 832, in raise_for_status
        raise http_error
    requests.exceptions.HTTPError: 404 Client Error

    查看响应头

    >>> r.headers
    {
        'status': '200 OK',
        'content-encoding': 'gzip',
        'transfer-encoding': 'chunked',
        'connection': 'close',
        'server': 'nginx/1.0.4',
        'x-runtime': '148ms',
        'etag': '"e1ca502697e5c9317743dc078f67693f"',
        'content-type': 'application/json; charset=utf-8'
    }

    设置请求超时时间

    >>> requests.get('http://github.com', timeout=0.001)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)

    参考:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html

  • 相关阅读:
    linux常用的一些命令
    C语言之初认识
    前端VUE基于gitlab的CI_CD
    【Github】在repo中添加其它repo: adding embedded git repository
    【Algorithm】Sorting Algorithm
    【gitbook】gitbook init报错解决
    8 款浏览器兼容性测试工具介绍,需要的赶紧收藏吧!
    软件测试适合女生吗?大厂内部测试人员这样说!
    6 大测试用例设计题详细整理— 助攻高薪求职之路!
    APP 兼容性测试之云测平台体验
  • 原文地址:https://www.cnblogs.com/cocoajin/p/3680536.html
Copyright © 2020-2023  润新知