一、安装Requests
pip install requests
二、基本用法
一、导入库
import requests
二、发送请求
一、发送GET请求
基础使用
requests.get(url='网址')
如何将htttp://ip/expaml?size=1000&page=0进行使用,也是可以直接传入网址,但是get方法中也有类似post方法将参数传入params,代码如下
data = {"size":1000,'page':0}
# 在进行请求时会将网址拼完整
requests.get(url='http://ip/网址',params=data1)
生成的网址为 http://ip/网址?size=1000&page=0
二、发送POST请求
基础用法
url = '网址'
data = 参数
response = requests.post(url, data=data)
请求参数详解:
- data 参数用于发送表单数据(application/x-www-form-urlencoded 格式):
注意,当时使用data参数传参是,如果参数类型为json格式,接口会报错415,这个时候需要使用个headers参数和将data的数据转成json格式
url = '网址'
data = 参数
headers = {'Content-Type': 'application/json'}
# 普通使用
response = requests.post(url, data=data)
# 当data参数为字典,但是接口传入的是json
response = requests.post(url, data=json.dumps(data),headers=headers)
- json 参数用于发送 JSON 格式的数据:
url = '网址'
data = 参数
response = requests.post(url, json=data)
注意:如果表单数据为json格式,但是使用data进行传递的话需要再使用json模块进行转换,并且需要声明请求格式
import json
import requests
url = '网址'
data = 参数
data1=json.dumps(data)
headers = {'Content-Type': 'application/json;charset=UTF-8'}
response = requests.post(url=url, data=data1, headers=headers)
print(response.status_code)
- 上传头像
import requests
url = '网址'
# 传入需要上传的图片
files = {'file': open('error.png', 'rb')}
re = requests.post(url=url, files=files)
print(re.status_code)
三、响应处理
一、获取响应文本
1、获取文本格式
使用response.text获取
# 获取文本格式
response.text
2、获取json格式
使用response.json()
# 获取json格式
response.json()
3、获取二进制格式
使用response.content获取二进制格式(图片,视频等)
# 将图片进行保存
with open('image.png', 'wb') as f:
f.write(response.content)
二、 获取响应状态
一、获取响应状态码
使用response.status_code进行获取
print(response.status_code)
二、获取请求头
使用response.headers进行获取
print(response.headers)
三、获取接口的请求地址
使用response.url获取接口(使用于框架拼接而成的接口)
print(response.url)
四、获取接口重定向url
使用response.history进行获取,返回的是一个列表,如果请求的接口用到重定向,可以使用该方法来获取重定向链中的每个URL。
print(response.history)
四、超时
在request.get()或者requests.post()中添加timeout参数设置超时时间
response = requests.post(url='网址', data=files,timeout=5)
五、会话对象 Session
一、简介
使用requests.Session对象可以在多个请求之间保持会话,其HTTP请求方法与requests的请求方法一致。提供一种持久性的会话,允许在多个请求之间保持cookie、header和连接池等配置参数的共享,这样可以重用同一连接,而不是为每个请求创建一个新的连接。
二、如何使用?
一、创建会话
使用requests.Session()进行创建
# 创建会话
session = requests.Session()
二、访问请求
访问请求使其与requests的请求方式一样
# 进行get请求
session.get("https://www.baidu.com")
# 发送post请求
session.post("https://www.baidu.com", data={})
三、设置共享headers
使用session.headers.update()进行设置请求头,设置完成之后后续的接口将继承使用一个一个请求头
import requests
# 创建会话
session = requests.Session()
response = session.post("网址", json={"loginname": "guest", "password": "guest"})
print(response.json()['token'])
# 将token放入请求头让后面面的接口可以重复使用
session.headers.update({"Authorization": "Bearer " + response.json()['token']})
response1 = session.get("网址")