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"
      }
    }

      持续更...                     

  • 相关阅读:
    Java运算符
    Java数据类型,常量与变量
    内存
    cmd编码
    DELL G7重置电脑操作步骤
    关于es6中...运算符的总结
    js数组与字符串相互转换
    JS中的continue,break,return的区别
    git提交步骤
    数据修改后点击确定没有保存 还是原来的数据
  • 原文地址:https://www.cnblogs.com/kmnskd/p/9994112.html
Copyright © 2011-2022 走看看