zoukankan      html  css  js  c++  java
  • Requests模块

    参考文档:http://docs.python-requests.org/en/latest/user/quickstart/ PS:纯手打翻译

      在自动化运维中涉及到数据发送的问题,发送的数据JSON序列化才能向服务器端发送完整的数据。为了解决这个问题需要对requests模块进行了解和认识。

      导入request模块

    import requests
    

      现在有了一个Response响应对象r,我们可以从这个对象中获取我们需要的信息

    r = requests.get('https://api.github.com/events')
    

      Requests提供的简单的API意味着HTTP的各种请求形式都是显而易见的。例如下面是如何创建一个HTTP POST请求

    r = requests.post('http://httpbin.org/post', data = {'key':'value'})
    

      下面是HTTP请求的各种形式:

     r = requests.put('http://httpbin.org/put', data = {'key':'value'})
     r = requests.delete('http://httpbin.org/delete')
     r = requests.head('http://httpbin.org/get')
     r = requests.options('http://httpbin.org/get')
    

      URLs中的规范

      如果你想向指定URL发送数据,这些数据形式必须是以键值对的形式发送。Requests模块允许以键值对形式的字符串发送参数,并且你需要使用关键字params

    >>> payload = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.get('http://httpbin.org/get', params=payload)
    

      你可以这样查看对象r的URL

    >>> print(r.url)
    http://httpbin.org/get?key2=value2&key1=value1
    

      响应内容

    >>> import requests
    
    >>> r = requests.get('https://api.github.com/events')
    >>> r.text
    u'[{"repository":{"open_issues":0,"url":"https://github.com/...
    

      Requests模块会自动将从服务器获取的数据进行解码。大多数字符集会以unicode的形式无缝解码

      当你创建一个请求,Requests模块会基于HTTP头对响应进行编码。使用r.text可以查看编码文本内容。r.encoding查看编码,并且可以改变编码格式

    >>> r.encoding
    'utf-8'
    >>> r.encoding = 'ISO-8859-1'
    

      JSON响应内容

    Requsts模块有内置的JSON编码器,以便你可以进行JSON数据的处理

    >>> import requests
    
    >>> r = requests.get('https://api.github.com/events')
    >>> r.json()
    [{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
    

      如果JSON解码失败,r.json()会抛出异常。例如如果响应204,或者如果响应包括无效的JSON,r.json()抛出ValueError:NO JSON object could be decoded

      较为复杂的POST请求

      如果你想以某种编码形式编码数据,比如HTML form。你只需要传递一个字典给data参数,你的字典会自动被以form形式编码

    >>> payload = {'key1': 'value1', 'key2': 'value2'}
    
    >>> r = requests.post("http://httpbin.org/post", data=payload)
    >>> print(r.text)
    {
      ...
      "form": {
        "key2": "value2",
        "key1": "value1"
      },
      ...
    }
    

      你可以传递一组元祖给data参数,当form有多个元素并且拥有相同的键时

    >>> payload = (('key1', 'value1'), ('key1', 'value2'))
    >>> r = requests.post('http://httpbin.org/post', data=payload)
    >>> print(r.text)
    {
      ...
      "form": {
        "key1": [
          "value1",
          "value2"
        ]
      },
      ...
    }
    

      如果你发送的数据不是form编码。你需要传递一个字符串而不是一个字典

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

      不使用字典形式,你可以直接传递数据给json参数

    >>> url = 'https://api.github.com/some/endpoint'
    >>> payload = {'some': 'data'}
    
    >>> r = requests.post(url, json=payload)
    

      POST一个文件

    >>> url = 'http://httpbin.org/post'
    >>> files = {'file': open('report.xls', 'rb')}
    
    >>> r = requests.post(url, files=files)
    >>> r.text
    {
      ...
      "files": {
        "file": "<censored...binary...data>"
      },
      ...
    }
    

      你可以设置文件名,content_type和headers

    >>> url = 'http://httpbin.org/post'
    >>> files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
    
    >>> 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"
      },
      ...
    }
    

      

  • 相关阅读:
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 实现业务
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 开发流程
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 报表系统集成说明
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 处理报表
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 数据访问
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 分布式应用
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 实现插件
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 对象设计器使用帮助
    基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET平台开发指南 数据层开发
    Jquery 中的CheckBox、 RadioButton、 DropDownList、CheckBoxList、RadioButtonList的取值赋值
  • 原文地址:https://www.cnblogs.com/c491873412/p/7620234.html
Copyright © 2011-2022 走看看