在 Python 中使用requests模块发布表单数据

news2024/11/27 3:46:41

文章目录

    • 使用 requests 模块在 Python 中发布表单数据
      • POST请求方式介绍
      • 在 Python 中安装 requests 模块
      • post() 方法的应用


本篇文章介绍了 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)

输出:

使用请求模块在 python 中发布表单数据 - 请求图像一

收到一个响应对象,其中包含很多信息。 首先,具有用户名和密码的键和值的表单对象是测试。 然后标头对象包含一些属性: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)

输出:

使用请求模块在 python 中发布表单数据 - 请求图像二

作为输出,返回一个空数据对象并获得文件对象,文件属性的值为文件的内容(在工作目录中创建的 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

输出:

使用requests模块在python中发布表单数据——请求图三

在输出中,月访问会话 cookie 随所有三个请求一起传递。 但是年访问 cookie 仅在第二次请求期间传递。

第三个请求中没有年访问cookie。 因此,这证实了在单个请求上设置的 cookie 或其他数据不会与其他会话请求一起传递。

考虑到 post() 的好处,它比 GET 方法更安全,因为用户输入的信息在 URL 查询字符串或服务器日志中永远不可见。

我们可以发送的数据量有更大的限制,一个人可以发送文本或二进制数据,例如使用 POST 方法上传文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

由浅入深,详解ViewModel那些事

前言:今年的龙舟雨来了,一场接一场,雨量很大。 前言 以往如果需要在 Activity 或者 Fragment 中保存数据状态则需要重写onSaveInstanceState ,使用bundle去存储相应的数据和状态,但是这也只能保存轻量简单的序列化数据…

【STM32】软件I2C

【STM32】软件I2C I2C简介 I2C总线是一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。I2C总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。 在一个i2c通讯总线中,可连接…

怎么显示文件后缀名?查看文件后缀名可以这样做!

案例:在我的电脑上,看不到文件的后缀名,这会导致命名时出现重复文件后缀的情况,给我带来了不好的体验。怎么才能看到文件的后缀名呢?如何操作? 在日常使用电脑的过程中,我们经常需要查看文件的…

实习记录(二)Java常用工具库

一.Lombok 1.背景概述 Lombok是一个非常高效的专用于Java的自动构建插件库,其简化了 JavaBean 的编写,避免了冗余和样板式代码的出现,让编写的类更加简洁明了,可以帮助大家节省很多重复低效的代码编写。比如重复性的Setter、Gett…

【c语言】五道经典练习题④

目录 ①、年月日经过n天后的日期 ②、坐标排序 ③、统计文件中出现某个单词的次数 ④、输出含for的行 ⑤、比较两个文本是否相等 ①、年月日经过n天后的日期 题述:定义包含年月日表示的日期的结构体,写程序实现计算某年某月某日过n天后的日期是哪年…

肠道细菌阻碍阿卡波糖的降血糖作用

我们知道,口服抗糖尿病药是治疗糖尿病的有效方式之一。然而,患者对抗糖尿病药的反应程度各不相同,例如,有些患者在长期使用阿卡波糖后会产生耐药性。 阿卡波糖通常在饭前口服。它抑制人α-葡萄糖苷酶达到降血糖作用,包…

GWO-VMD-近似熵-极限学习机的轴承故障诊断软件,以西储大学轴承数据为例,采用MATLABAPP开发

采用灰狼算法优化VMD两个参数,以包络熵为最小适应度值,在最佳参数下提取采用近似熵指标提取西储大学轴承数据的特征向量,最后选用极限学习机ELM进行故障诊断。将以上程序集成在MATLABAPP进行开发。 首先是这个软件的各个界面展示。 软件启动…

云安全技术(四)之云计算安全的设计原则

计算安全的设计原则 Understand Design Principles of Secure Cloud Computing 1.1 云安全数据生命周期 Cloud secure data lifecycle 数据始终是安全保护的首要问题。必须深刻了解数据生命周期,以便正确制定和遵守安全策略,把握正确的步骤顺序&#xf…

万博智云与品高股份完成产品兼容性互认证,持续助力国产化生态建设

近日,万博智云的HyperBDR云容灾软件与广州市品高股份有限公司(简称:品高股份)旗下产品品高基础架构云资源管理软件V9.0完成了产品兼容性认证。 经万博智云和品高云双方人员的共同测试,得出结论: HyperBDR…

【C/C++数据结构与算法】C语言链表

目录 一、单链表 二、双向循环链表 三、判断链表是否带环 四、链表的回文结构判断 五、复制带随机指针的链表 一、单链表 优点:头部增删效率高,动态存储无空间浪费 缺点:尾部增删、遍历效率低,不支持随机访问节点 头结点&…

【夜深人静学习数据结构与算法 | 第六篇】贪心算法

目录 前言: 引入: 贪心算法: 455. 分发饼干 - 力扣(LeetCode) 376. 摆动序列 - 力扣(LeetCode) 53. 最大子数组和 - 力扣(LeetCode) 122. 买卖股票的最佳时机 II - 力扣&a…

【Python 随练】统计字符类型个数

题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 简介: 在本篇博客中,我们将解决一个字符统计问题:输入一行字符,统计其中英文字母、空格、数字和其他字符的个数。我们将提供…

学习python爬虫需要掌握哪些库?

Python爬虫是指使用Python编写的程序,用来自动化地获取互联网上的数据。通过爬取网站的HTML内容,并解析和提取所需的数据,可以实现自动化地收集、分析和处理大量的在线数据。 学习Python爬虫需要掌握以下几个核心库: Requests&am…

【ARM AMBA AXI 入门 9 - AXI 总线 AxPROT 与安全之间的关系 】

文章目录 介绍ARM Trustzone的安全扩展简介 1.1 AXI AxPROT 介绍1.1.1 AXI 对 Trustzone的支持 介绍 ARMv8 架构中的AXI(Advanced eXtensible Interface)总线与NS(Non-Secure)位密切相关。NS位是指在ARM TrustZone安全扩展中定义…

LeetCode 1254. Number of Closed Islands【DFS,BFS,并查集】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

单片机MCU如何实现让部分代码运行在RAM中

随着单片机硬件的发展,其中的RAM和flash越做越大。MCU在实际的使用中,通常程序都是运行在flash上的,RAM的高速空间并没有得到充分的利用,如果我们的程序需要运行的更快,系统有更好的实时性,我们可以考虑将这…

CSS查缺补漏之《常用长度单位(px、em、rem、%、vw/vh、vmin/vmax)》

此文内容较少,轻轻松松掌握,莫要有压力~ 正如现实生活中长度具有mm、dm、cm、m等,在css中,也具备多种长度单位,本文对常用的几种单位进行详细举例介绍~ px:像素单位 初学css时,px单位经常被使用…

【Leetcode60天带刷】day08字符串——344.反转字符串, 541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词

题目: 344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入&…

基于SpringBoot+Vue的“漫画之家”系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

新电脑机环境安装笔记

「Navicat_15.0.25_64bit_Setup.exe」 下载https://www.aliyundrive.com/s/b9xUw2JpuJb Navicat Keygen Patch v5.6.0 下载 https://www.aliyundrive.com/s/YYyE5BQMMuN 全程断网操作 patch 将安装目录选中 提示 check 64 mysql安装: https://baijiahao.baidu…