zoukankan      html  css  js  c++  java
  • requests库

    Request

    • pip3 install requests

    • res = requests.get(url,params) 获取响应网页对象,params以字典形式向url传参,value值为None不会传入。

      import requests
      params = {'name':'km','age':22}
      headers = {'Server':'likun'}
      res = requests.get('http://httpbin.org/get',params=params,stream=True,headers=headers)
      • res.text 打印响应内容

      • res.encoding 当前响应使用的编码,可以重新赋值改变使用自己合适的编码

      • res.content 二进制响应内容

      • res.json() json响应内容

      • res.raw 获取原始响应数据,需在get请求中加参数stream=True

      • res.headers 获取请求头

        • res = requests.get(url,params,headers=headers) 自己添加请求头

      • res.cookies 获取cookies

        • 如果想发送cookies到服务器,可以使用cookies参数

          cookies = {'cookies_are':'working'}
          res = requests.get('http://httpbin.org/cookies',cookies=cookies)
          print(res.text)
          ​
          {"cookies": {"cookies_are": "working"}}
      • res.status_code 状态码

        • res.status_code == requests.codes_ok 内置的状态码查询,200返回True

        • res.raise_for_status() 如果发送错误的4xx或5xx请求,可以用这个函数抛出异常

      res = requests.get('http://httpbin.org/status/404')
      print(res)
      res.raise_for_status() 
    • requests.post(url,params) post传数据

      • 发送以表单形式的数据,data参数以字典形式上传

        data = {'key1':'value1','key2':'value2','key2':'value3'}#同一key值自动处理在一起
        res = requests.post('http://httpbin.org/post',data=data)
        {
          ...
          "form": {
            "key1": [
              "value1",
              "value2"
            ]
          },
          ...
        }
      • 流式上传,发送大文件时无需先把它们读入内存。

        with open('massive-body','rb') as f:
            requests.post('http://some.url/streamed',data=f)
      • res.request.post('http://httpbin.org/post',files=files) files二进制上传

        files = {'file':open('1.jpg','rb')}
        res = requests.post('http://httpbin.org/post',files=files)
    • 证书验证:Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出 SSLError: requests.exceptions.SSLError 报错。

      • 也可以为verify传入CA_BUNDLE 文件路径,或者包含可信任 CA 证书文件的文件夹路径:

      • 改为False除去证书验证

      import requests
      from requests.packages import urllib3
      urllib3.disable_warnings() #调用这个包消除警告信息
      res = request.get('http://www.12306.cn',verify=False)
      print(res.status_code)
      ​
      200
      • cert参数指定本地证书作为客户端证书,可以是单个文件(包含密钥和证书)或一个包含两个文件路径的元组:

        requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))
        <Response [200]>
    • 设置代理:proxies 参数设置代理ip

      proxies = {
              'http':'http://127.0.0.1:9743',
              'https':'https://127.0.0.1:9743'
              }
      res = requests.get('http://www.taobao.com',proxies=proxies)
      • 有用户名的代理

        proxies = {'http':'http://user:password@127.0.0.1:9743/'}
    • 超时设置:timeout 参数

      res = res = requests.get('http://www.taobao.com',timeout=1)
    • 异常处理:requests.exceptions基类

    • 会话对象,会话维持:会话对象可以让你保持连接状态,跨站请求保持某些参数。它是一个Session实例,这个实例会在所有的请求之间保持cookie。所以如果你向同一主机发送多个请求,底层的TCP会被重用,从而带来显著地性能提升。

      • 同一会话中的连接状态都是持久的,urllib3自动处理

      #跨站保持cookies
      import requests
      s = requests.Session()
      s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
      res = s.get("http://httpbin.org/cookies")
      print(res.text)
      '{"cookies": {"sessioncookie": "123456789"}}'
    • 会话对象也可以为请求方法传参
    s.headers.update({'x-test': 'true'})#添加新的值
    res = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
    {
      "headers": {
        "Accept-Encoding": "identity", 
        "Connection": "close", 
        "Cookie": "sessioncookie=123456789", 
        "Host": "httpbin.org", 
        "X-Test": "true", 
        "X-Test2": "true"
      }
    }

      持续更...                     

  • 相关阅读:
    Windows Azure Cloud Service (14) 使用Windows Azure诊断收集日志记录数据
    Windows Azure Cloud Service (13) 用Visual Studio 2010 将应用程序部署到Windows Azure平台
    Windows Azure Cloud Service (15) 多个VM Instance场景下如何处理ASP.NET Session
    Windows Azure Storage (5) Windows Azure Drive
    Windows Azure Storage (7) 使用工具管理Windows Azure Storage
    SQL Azure(二) SQL Azure vs SQL Server
    webbrowser的自动提交
    提取视频的背景声音的软件
    Listview列排序的bug原因
    两个奇怪的问题
  • 原文地址:https://www.cnblogs.com/kmnskd/p/9994112.html
Copyright © 2011-2022 走看看