1、安装 requests
可以使用 pip
来安装 requests
库,
pip install requests
2、requests.post() 方法
requests.post()
方法用于发送 HTTP POST 请求。它接受一个 URL 作为参数,并返回一个 Response 对象。
参数:
参数 | 描述 |
url | 要发送请求的 URL。 |
data | 要发送的数据。可以是字符串、字典或 bytes 对象。 如果是字符串,将使用 application/x-www-form-urlencoded 编码。如果是字典,将使用 application/json 编码。如果是 bytes 对象,将使用 multipart/form-data 编码。 |
files | 要上传的文件。可以是字典或 list 对象。 如果是字典,将使用 multipart/form-data 编码。 如果是 list 对象,每个元素将使用 multipart/form-data 编码。 |
headers | 请求头。 |
params | 查询参数。 |
cookies | cookie。 |
auth | 认证信息。 |
timeout | 超时时间。 |
verify | 是否验证 SSL 证书。 |
stream | 是否以流式方式读取响应内容。 |
**kwargs | 其他可选参数。 |
3、使用 requests.post() 上传
使用 Python 的 requests.post()
方法上传文件,可以使用 files 参数,通过直接读取文件方式上传数据,也可以通过BytesIO对象上传数据,如下,
1)上传文件
import requests import json url = "https://request-url.com" headers = {"Content-Type": "application/json; charset=utf-8"} with open(filepath, 'rb') as fobj: response = requests.post(url, headers=headers, files={'file': fobj}) print("Status Code", response.status_code) print("JSON Response ", response.json())
2)上传BytesIO对象
import requests req = requests.get("https://example.com/images/1.jpg") url = "https://example.com/upload" buf = BytesIO(req.content) #buf.write(content) #buf.seek(0,0) headers = { "referer": "http://www.cjavapy.com/admin/article/add", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36", } files = {'upload_file': ("WXACode%s.jpg" % articleId, buf.getvalue(), 'image/jpeg')} # 发送请求 response = requests.post(url,files=files, headers=headers)