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)