zoukankan      html  css  js  c++  java
  • requests -- http请求库(基础)

     

    使用第三方库:requests  

    下载:pip install requests

     一、发送get请求

      发送 get 请求,无参数。(三种接受响应方式、text、二进制、json)

    import requests
    
    # requests 第三方库
    #   安装: pip install requests todo 文件名称千万不要和 requests 同名
    url = 'http://127.0.0.1:5000/'
    res = requests.get(url)  # 没有参数就不用传递参数
    print('打印出来的一个对象:
    ', res)  # 打印出来的一个对象
    # 获取状态码
    print('状态码:
    ', res.status_code)
    # 返回的数据 文本,用处:接受普通文本或者HTML
    print('返回的数据 文本:
    ', res.text)
    # 接受响应数据,用处:二进制(图片或者视频等等) b开头
    print('返回二进制 b开头:
    ', res.content)
    # 接受响应数据, decode() 二进制转换成字符串
    print('二进制转换成字符串:
    ', res.content.decode())
    # 接受响应数据,js格式 如果服务器返回的不是 json 格式的会报错
    # 用处:当服务器返回的标准json格式的,接口主要用 json 格式
    print('js格式:
    ', res.json())

      发送get请求,有参数,useragent 显示的是python发送的请求

    url = 'http://127.0.0.1:5000/'
    data = {'username': 'PyCharm', 'pwd': '123456'}
    res = requests.get(url, params=data)
    print(res.text)

      发送get请求,有参数,带请求头,代理改为Google  (get 只有一种传递方式,没有请求头)

    url = 'http://127.0.0.1:5000/'
    data = {'username': 'PyCharm', 'pwd': '123456'}
    # 带请求头
    headers = {'User-Agent': 'Google'}
    res = requests.get(url, params=data, headers=headers)
    print(res.text)

    二、发送post请求

      发送 post请求,data,form 表单形式。根据需求选择传递参数

      1)第一种形式:放到URL  ,params, 都放到请求地址上

    url = 'http://127.0.0.1:5000/'
    data = {'username': 'mei', 'ped': '123456'}  # 多个参数
    
    # 传递参数的三种方式:params, data, json
    # post 把参数放到URL里面:params
    res = requests.post(url, params=data)
    # 响应格式 print(res.text)

     

      2)第二种形式:body表单形式 data

    url = 'http://127.0.0.1:5000/'
    data = {'username': 'mei', 'ped': '123456'}  # 多个参数
    # 传递参数的三种方式:params, data, json
    
    # post 把参数通过data方式
    res = requests.post(url, params=data, data=data)
    
    # 响应格式
    print(res.text)

      3)第三种形式:JSON

    url = 'http://127.0.0.1:5000/'
    data = {'username': 'mei', 'ped': '123456'}  # 多个参数
    # 传递参数的三种方式:params, data, json
    
    # post 把参数通过json
    res = requests.post(url, params=data, json=data)
    
    # 响应格式
    print(res.text)

    获取cookies,获取需要首先登陆后获取 (通过tes.cookies获取所有的cookie)(post传递参数的三种方式,params、data、json,根据接口文档来传递)

      res.cookies 获取全部的cookie

    # data
    url = 'http://127.0.0.1:5000/login'
    data = {'username': 'PyCharm', 'pwd': '123456'}
    # 传递参数的三种方式:params,data,json
    res = requests.post(url, params=data, data=data)
    # res1 = requests.post(url, params=data, json=data)
    print(res.text)
    # 获取所有的cookies,cookies 是一个对象,里面有很多的cookie
    cookies = res.cookies
    url1
    = 'http://127.0.0.1:5000' res1 = requests.post(url1, cookies=cookies) print(res1.text)

     使用  Session 管理 cookie  作用是动态管理cookie,集中管理所有的资源,不需要我们手动进行设置

     这里使用的 session管理cookie,也可以手动管理

    url = 'http://127.0.0.1:5000/'
    url_login = 'http://127.0.0.1:5000/login'
    
    # 创建会话对象, 可以理解成一个浏览器
    session = requests.Session()
    # 会话访问 使用 Session 管理 cookie
    res = session.get(url_login)  # 相当于先登录 后获取
    
    res1 = session.get(url)
    print(res1.text)

     总结

    1、传递参数的三种方式
        第一种放到URL形式  params
        第二种形式body表单形式   data
        第三种形式json

    2、接收文本的几种方式
      返回的数据 文本形式 主要用来接收普通文本或者XTML格式
      print(f'返回的数据 文本: {res.text}')
      接收响应数据:二进制形式 服务器返回二进制数据:图片或者视频
      print(f'二进制:{res.content}')
      print(f'二进制转换字符串: {res.content.decode()}')
      json 格式的响应 得到的 json 是字典格式的
      如果服务器返回的文本不是一个 json 格式的,会报错
      当服务器返回的是一个标准的json格式的,接口主要用 json 格式
      print(res.json())

    三、 data 和 header 是字典类型
       res = request.get(url, params=参数, header=请求头需要作为关键字参数)

    四、 requests.Session() 会话机制,
       作用:动态管理cookie,集中管理所有的资源,不需要我们手工进行设置
       s = requests.Session() 和 requests.get 和 s.get 是一样的作用

    ps 使用requests请求的简化版接口 

    from flask import Flask, redirect, jsonify, make_response, Response, request
    
    app = Flask(__name__)
    
    
    @app.route('/', methods=['GET', 'POST'])
    def index():
        if not request.cookies.get('user'):
            # 验证,session
            return jsonify({"mag": "login"})
        return jsonify({"msg": " hello word"})
    
    
    # 接口是一个函数,类。
    # 不是所有函数都是接口,
    
    @app.route('/login', methods=['GET', 'POST'])
    def login():
        resp = Response('login success')
        resp.set_cookie('user', 'user')
        # 保存到服务端。
        return resp
    
    
    app.run(debug=True)
  • 相关阅读:
    在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。【转】
    Java 学习 day05
    Java 学习 day04
    Java 学习 day03
    Java 学习 day02
    Java 学习 day01
    学习TensorFlow,TensorBoard可视化网络结构和参数
    自编码器及相关变种算法简介
    自编码器(autoencoder)
    卷积神经网络
  • 原文地址:https://www.cnblogs.com/yongzhuang/p/12198793.html
Copyright © 2011-2022 走看看