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)
原文地址:https://www.cnblogs.com/yongzhuang/p/12198793.html