在 Python 中使用requests模块发布表单数据
本篇文章介绍了 Python requests 模块,并说明了我们如何使用该模块在 Python 中发布表单数据。
使用 requests 模块在 Python 中发布表单数据
Python 可用于访问网页,也可用于向网页发布内容。
无论是否有httplib、urllib、httplib2等不同的模块,Python中的requests模块是最简单的,可以编写强大的涉及GET和POST方法的程序。
requests 库是 Python 的主要方面之一,用于创建对已定义 URL 的 HTTP 请求。
POST请求方式介绍
万维网 HTTP 支持 POST 请求方法。 在考虑格式时,POST 请求方法请求 Web 服务器接受请求消息正文中包含的数据,显然是存储它们。
我们经常用它来上传文件或提交最终的网络表单。 例如,post() 向指定的 URL 发送 POST 请求。 当我们需要向服务器发送一些数据时,我们也可以使用它。
- 它对数据长度没有任何限制,根据需要设置。
- 它不存在于浏览器历史记录中。
- 它永远不会被缓存。
- 它不能是书签。
在 Python 中安装 requests 模块
可以使用以下命令安装使用 post()
方法所需的请求模块:
python -m pip install requests
或者
pip install requests
如果 pipenv 管理 Python 包,我们可以使用以下命令。
pipenv install requests
安装 requests 模块后,可以按如下方式在程序中导入和使用它:
import requests
现在,如何使用 requests.post()
方法? 它的语法是什么? 下面一起来了解一下吧。
语法:
requests.post(url, data={key: value}, json={key: value}, args)
在这里,args 等于 0 个或多个命名参数作为以下参数:
参数 | 说明 |
---|---|
url | 请求的URL是一个重要的部分。 |
data | 可选。 字典、元组列表、字节或文件对象被发送到指定的 URL。 |
json | 可选。 要定向到指定 URL 的 JSON 对象。 |
files | 可选。 要传递到指定 URL 的文件目录。 |
allow_redirects | 可选。 启用或禁用重定向的布尔值。 默认值为 True,表示允许重定向。 |
auth | 可选。 启用特定 HTTP 身份验证的元组。 默认值为无。 |
cert | 指定证书文件或密钥的字符串或元组。 可选,默认值为 None。 |
cookies | 发送到指定 URL 的 Cookie 字典,可选,默认值为 None。 |
headers | 可选,默认无,要发送到定义的 URL 的 HTTP 标头字典。 |
proxies | 可选,默认无,代理 URL 的协议字典。 |
stream | 响应的布尔值指示,无论是 False(已下载)还是 True(流式传输)。 可选,默认为 False。 |
timeout | 可选,一个数字,指示等待客户端建立连接和/或发送响应的时间。 默认值为无。 这意味着请求将继续,直到连接关闭。 |
verify | 一个布尔值或字符串指示,用于验证/不验证服务器的 TLS 证书。 选修的。 默认值是true。 |
post() 方法的应用
下面的代码围栏演示了 post()
方法的用法,用户通过 post()
方法将数据发布到 httpbin 网站,并获得有关发布方式的响应。
import requests
values = {'username':'user','password':'test'}
result = requests.post('https://httpbin.org/post',data = values)
print(result.text)
输出:
收到一个响应对象,其中包含很多信息。 首先,具有用户名和密码的键和值的表单对象是测试。 然后标头对象包含一些属性:Next、JSON、origin 和 URL。
要发布多部分编码的文件,请通过使用 post() 方法的文件属性将文件发送到服务器来发出多部分 POST 请求。
import requests
files = {'file': open('test.txt', 'rb')}
url = 'https://httpbin.org/post'
result = requests.post(url, files=files)
print(result.text)
输出:
作为输出,返回一个空数据对象并获得文件对象,文件属性的值为文件的内容(在工作目录中创建的 test.txt 文件的内容,即测试文本)。
要在会话中发出 POST 请求,请将 cookie 设置为 URL,然后再次发出请求以评估是否设置了 cookie。 当用户需要在所有请求中发送相同的数据时,会话也很有用。 例如:
import requests
s = requests.Session()
s.cookies.update({'month-visit': 'July'})
request01 = s.get('http://httpbin.org/cookies')
print(request01.text)
# outputs details on the "month-visit" cookie
request02 = s.get('http://httpbin.org/cookies', cookies={'year-visit': '2022'})
print(request02.text)
# outputs details on "month-visit" and "year-visit" cookie
request03 = s.get('http://httpbin.org/cookies')
print(request03.text)
# outputs details on the "month-visit" cookie
输出:
在输出中,月访问会话 cookie 随所有三个请求一起传递。 但是年访问 cookie 仅在第二次请求期间传递。
第三个请求中没有年访问cookie。 因此,这证实了在单个请求上设置的 cookie 或其他数据不会与其他会话请求一起传递。
考虑到 post()
的好处,它比 GET 方法更安全,因为用户输入的信息在 URL 查询字符串或服务器日志中永远不可见。
我们可以发送的数据量有更大的限制,一个人可以发送文本或二进制数据,例如使用 POST 方法上传文件。
相关文章
在 Python 中使用令牌进行 API 调用
发布时间:2023/06/02 浏览次数:148 分类:Python
-
在 Python 中进行不带令牌的 API 调用 要启动,我们需要先安装一个 Python 库来处理这个请求; 当我们在 Python 中调用 API 时,我们可以使用令牌来调用
在 Python 中使用请求设置用户代理 User-Agent
发布时间:2023/06/02 浏览次数:175 分类:Python
-
本文介绍 HTTP 标头用户代理主题以及如何使用 Python 中的请求设置用户代理。 您将了解 HTTP 标头及其在理解用户代理、获取用户代理以及学习使用 Python 中的请求设置用户代理的多种方法方面的
Python 忽略请求中的 SSL 安全证书检查
发布时间:2023/06/02 浏览次数:115 分类:Python
-
本文将提供多种使用请求禁用安全证书检查的方法。了解 SSL 安全检查背后的原因及其失败的原因 如果程序使用 Python 请求从 SSL 证书已过期的 URL 获取请求,它会引发两个异常。
Python 请求分页
发布时间:2023/06/02 浏览次数:179 分类:Python
-
在本文中,我们将了解分页以及如何克服 Python 中与分页相关的问题。 读完本文后,我们将能够了解 Python 分页以及如何使用它处理问题。什么是 Python 中的分页
Python 生成器推导
发布时间:2023/06/02 浏览次数:159 分类:Python
-
在本文中,我们将学习 python 的生成器和生成器推导以及示例。Python 中的生成器:Python 中的生成器是返回可迭代或遍历对象的函数,用于创建一次遍历项目的迭代器。
在 Python 中检查生成器是否为空
发布时间:2023/06/02 浏览次数:139 分类:Python
-
本文讨论如何在 Python 中检查生成器是否为空。在 Python 中检查生成器是否为空是指检查路径以确保它为空。
在 Python 中使用 PhantomJS
发布时间:2023/06/02 浏览次数:107 分类:Python
-
这篇 Python 文章将研究 PhantomJS 以及我们如何将它与用于 Python 编程的 Selenium Web 自动化模块一起使用。 我们还将研究为什么它比其他可用的自动化 Web 驱动程序更有用。
Python 查询 DynamoDB
发布时间:2023/06/02 浏览次数:127 分类:Python
-
本文将讨论如何使用 python 查询 Amazon DynamoDB。 我们还将讨论 Boto3 是什么以及它为什么需要查询 DynamoDB。
创建 Python 脚本以在 Linux 中打开新终端并运行命令
发布时间:2023/06/02 浏览次数:54 分类:Python
-
Linux 操作系统以其程序员广泛使用的多功能终端而闻名。创建在 Linux 中打开新终端并运行命令的 Python 脚本