request模块基本使用方法
文章目录
- 一、前言
- 二、请求
- 2.1 请求方式
- 2.2 请求参数
- 2.3 cookie
- 三、响应
一、前言
官方文档:https://requests.readthedocs.io/en/latest/
模块安装:
pip install request
二、请求
2.1 请求方式
常用请求方法:get、post
| 请求方法 | 含义 |
|---|---|
| get | 向特定的资源发出请求 |
| post | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件) |
| put | 向指定资源位置上传其最新内容 |
| delete | 请求服务器删除Request-URL所标识的资源 |
| options | 返回服务器针对特定资源所支持的HTTP请求方法 |
| head | 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回 |
2.2 请求参数
常用请求参数:
| 请求参数 | 含义 |
|---|---|
| url | 请求的url,必选参数 |
| params | 请求参数 |
| headers | 请求头 |
| data | 表单数据 |
详细参数解析:
params参数:一般用来在url的查询字符串发送数据
payload = {'key1': 'value1', 'key2': 'value2'}r = requests.get('https://httpbin.org/get', params=payload)
# url:https://httpbin.org/get?key2=value2&key1=value1
stream参数:流式传送数据,可以用来将数据分流进行下载,搭配response.iter_content使用
r = requests.get('https://api.github.com/events', stream=True)with open(filename, 'wb') as fd:for chunk in r.iter_content(chunk_size=128):fd.write(chunk)
headers参数:向请求添加http标头,所有标头值必须是字符类型
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}r = requests.get(url, headers=headers)
一些常用的请求头:
| 请求头 | 含义 |
|---|---|
| user-agent | 与浏览器或其他生成请求的客户端软件有关的信息 |
| referer | 发出请求的原始URL |
| cookie | 提交服务器向客户端发布的其他参数 |
data参数:发送表单数据,表单数据可以为元组列表或者字典类型
payload = {'key1': 'value1', 'key2': 'value2'}r = requests.post('https://httpbin.org/post', data=payload)
json参数::发送json类型的表单数据
import jsonurl = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}# r = requests.post(url, data=json.dumps(payload))
r = requests.post(url, json=payload)
proxies参数:
proxies =
{"http" : "http://127.0.0.1:8888","https" : "https://"127.0.0.1:8888",
}
requests.get(url, proxies = proxies)
files参数:上传文件,可以设置文件名,内容类型,头部信息,或者直接传送数据
url = 'https://httpbin.org/post'files = {'file': open('report.xls', 'rb')}
# files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
# files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}r = requests.post(url, files=files)
文件较大时,可以采用流式上传(建议用二进制模式打开):
with open('massive-body', 'rb') as f:requests.post('http://some.url/streamed', data=f)
allow_redirects参数:默认情况下,requests发送的请求除了head之外,都会自动进行重定向,可以通过设置allow_redirects值为False来取消重定向。
url = 'https://api.github.com/some/endpoint'r = requests.get(url, allow_redirects = False)
verify参数:向网站发送请求时,会像 Web 浏览器一样验证 HTTPS 请求的 SSL 证书。如果无法验证证书,将抛出 SSLError;可以令verify=False也可以将ssl证书路径传递给verify参数。
url = 'https://api.github.com/some/endpoint'# r = requests.get(url, verify = False)
r = requests.get(url, verify='/path/to/certfile')
timeout参数:通过设置timeout,可以强制请求要在特定的时间内返回结果,否则就报错。
url = 'https://api.github.com/some/endpoint'r = requests.get(url, timeout = 1)
除此之外,也可以使用retrying模块来刷新网页,模块安装:pip install retrying。retry方法可以在函数报错后重新执行,stop_max_attempt_number为最大刷新次数。
from retrying import retry@retry(stop_max_attempt_number=3) #最大刷新次数为3
def test():url = 'https://api.github.com/some/endpoint'r = requests.get(url, timeout = 1)assert r.status_code == 200 # 不是200,也会报错return rif __name__ == '__main__':try:r = test()except Exception as e:print("error")r = None
2.3 cookie
(1)原理:由于http是无状态协议,一旦客户端和服务器的数据交换完毕,就会断开连接,再次请求会重新连接。为了让服务器知道用户身份,那就在每次请求时带上cookie(身份证),这样就能针对不同用户做出不同响应。
(2)分类:cookie按照过期时间分为:会话cookie和持久cookie。会话cookie在用户退出浏览器时就会删除;而持久cookie无论是退出浏览器,还是重启电脑它依然存在,但持久cookie通常会有过期时间或者有效期。
(3)添加cookies的方式:
-
直接添加到headers中:
url = 'https://httpbin.org/cookies' headers = {'cookies_name' : "cookies_values" }r = requests.get(url, headers=headers) -
传给cookies参数:
url = 'https://httpbin.org/cookies' cookies = { "cookies_name" : "cookies_values"}r = requests.get(url, cookies=cookies) -
获取响应提取cookies:
url = 'https://httpbin.org/cookies' r = requests.get(url)cookies = requests.utils.dict_from_cookiejar(r.cookies) -
使用session模块:session能够自动带上前一次请求的cookie
s = requests.Session() r = s.get(url , headers)
三、响应
response常用属性:
| 属性 | 含义 |
|---|---|
| text | 响应体,str类型 |
| content | 响应体,bytes类型 |
| url | 响应url |
| status_code | 响应状态码 |
| request.headers | 请求头 |
| headers | 响应头 |
| encoding | 编码 |
| history | 请求历史 |
常见状态码:
| 状态码 | 含义 |
|---|---|
| 100 Continue | 已收到请求消息头,客户端应继续发送主体。请求完成后,再由服务器返回另一个响应。 |
| 200 Ok | 成功提交请求 |
| 301 Moved Permanently | 将浏览器永久重定向到另外一个在Location消息头中指定的URL |
| 302 Found | 将浏览器暂时重定向到另外一个在Location消息头中指定的URL,客户端应在随后的请求中恢复使用原始URL. |
| 400 Bad Request | 客户端提交了一个无效的HTTP请求 |
| 401 Unauthorized | 服务器在许可请求前要求HTTP进行身份验证。 |
| 403 Forbidden | 不管是否通过身份验证,禁止任何人访问被请求的资源。 |
| 404 Not Found | 所请求的资源并不存在。 |
| 405 Method Not Allowed | 指定的URL不支持请求中使用的方法。 |
| 500 Internal Server Error | 服务器在执行请求时遇到错误 |
相关文章:
request模块基本使用方法
文章目录 一、前言二、请求2.1 请求方式2.2 请求参数2.3 cookie 三、响应 一、前言 官方文档:https://requests.readthedocs.io/en/latest/ 模块安装:pip install request 二、请求 2.1 请求方式 常用请求方法:get、post 请求方法含义get向…...
内网攻防——红日靶场(一)
在学习内网的过程中有着诸多不了解的内容。希望能借下面的靶场来步入内网的大门。 一、准备阶段 首先准备好我们的虚拟机 之前有学过关于:工作组、域、DC的概念。 了解一下此时的网络拓扑图 1.设置网络VMnet1和Vmnet8 将VMnet1作为内网,VMnet8作为外…...
协议-LoRa-Lorawan
是什么? LoRa是低功耗广域网通信技术中的一种,是Semtech公司专有的一种基于扩频技术的超远距离无线传输技术。LoRaWAN是为LoRa远距离通信网络设计的一套通讯协议和系统架构。它是一种媒体访问控制(MAC)层协议。LoRa = PHY Layer LoRaWAN = MAC Layer功耗最低,传输最远 ![ …...
redis主从搭建
1. 哨兵 1.1 ⼈⼯恢复主节点故障 Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量 的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的&…...
std::inplace_merge解析
一 基本概念 std::inplace_merge 是 C++ 标准库<algorithm> 中的算法,用于将两个已排序的相邻范围 合并为一个有序范围,且原地操作(无需额外存储空间)。 二 函数原型 template< class BidirectionalIterator > void inplace_merge( Bidirection…...
【STM32】NVIC(嵌套向量中断控制器)
什么是 NVIC? NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器) 适用于 Cortex-M0、M3、M4、M7 等 ARM 处理器,广泛用于 STM32、ESP32、GD32、NXP 等 MCU 中,它用于管理和控制中断…...
Linux中Gdb调试工具常用指令大全
1.gdb的安装 如果你是root用户直接用指令 :yum install gdb ;如果你是普通用户用指令:sudo yum install gdb; 2.gdb调试前可以对你的makefile文件进行编写: 下面展示为11.c文件编写的makefile文件: code…...
操作系统-八股
进程基础: 进程定义:运行中的程序,有独立的内存空间和地址,是系统进行资源调度和分配的基本单位。 并发,并行 并发就是单核上面轮询,并行就是同时执行(多核); 进程上下…...
ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
note 问题背景:序列推荐(SR)任务旨在预测用户可能的下一个交互项目。近年来,大型语言模型(LLMs)在SR系统中表现出色,但它们巨大的规模使得在实际平台中应用变得低效和不切实际。 研究动机&…...
3.14-进程间通信
进程间通信 IPC 进程间通信的原理,借助进程之间使用同一个内核,借助内核,传递数据。 进程间通信的方法 管道:最简单。信号:开销小。mmap映射:速度最快,非血缘关系之间。socket(本…...
71.HarmonyOS NEXT PicturePreviewImage组件深度剖析:从架构设计到核心代码实现
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT PicturePreviewImage组件深度剖析:从架构设计到核心代码实现 (一) 文章目录 HarmonyOS NEXT PicturePreviewImage组件深…...
简单实现京东登录页面
Entry Component struct Index {State message: string ;build() { Column(){//顶部区域Row(){Image($r(app.media.jd_cancel)).width(20).height(20)Text(帮助)}.width(100%).justifyContent(FlexAlign.SpaceBetween)//logo图标Image($r(app.media.jd_logo)).width(250).heig…...
非零初始条件系统的传递函数分析
非零初始条件系统的传递函数分析 在传递函数的定义中,通常假设系统满足零初始条件。然而在实际应用中,很多系统需要处理非零初始状态。为了探讨这一问题,我们以一个一阶微分方程为例进行分析。 一、一阶系统的分析 考虑以下一阶微分方程&a…...
9.贪心算法
简单贪心 1.P10452 货仓选址 - 洛谷 #include<iostream> #include<algorithm> using namespace std;typedef long long LL; const int N 1e510; LL a[N]; LL n;int main() {cin>>n;for(int i 1;i < n;i)cin>>a[i];sort(a1,a1n);//排序 LL sum 0…...
代码随想录算法训练营第31天 | 56. 合并区间 738.单调递增的数字 968.监控二叉树
56. 合并区间 代码随想录 56. 合并区间 - 力扣(LeetCode) class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals,(a,b)->{if(a[0] b[0])return a[1] - b[1];return a[0] - b[0];});List<int[]> result new Arra…...
Bash语言的集合
Bash语言的集合:一个深入探讨 引言 Bash(Bourne Again SHell)是一种Unix Shell和命令语言,广泛应用于Linux及类Unix系统中。作为Linux 默认的命令行解释器,Bash 被数以万计的开发者和系统管理员使用,以其…...
大模型训练全流程深度解析
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. 大模型训练概览1.1 训练流程总览1.2 关键技术指标 2. 数据准备2.1 数据收集与清洗2.2 数据…...
Pytorch实现之最小二乘梯度归一化设计
简介 简介:LSGAN提出了一种利用最小二乘法来计算两个数据分布之间的距离,该论文在此基础上采用梯度归一化来进一步稳定训练。 论文题目:LSN-GAN: A Novel Least Square Gradient Normalization for Generative Adversarial Networks(LSN-GAN:一种新的生成对抗网络的最小…...
每日一题---单词搜索(深搜)
单词搜索 给出一个二维字符数组和一个单词,判断单词是否在数组中出现, 单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。 数据范围: 0 < 行长度 < 100 0 < 列长度 <…...
插入排序c++
插入排序的时间复杂度为O(N^2),和冒泡排序的时间复杂度相同,但是在某些情况下插入排序会更优。 插入排序的原理是:第1次在0~0范围内排序,第2次在0~1范围内排序,第3次在0~2范围内排序……相当于…...
Swagger 从 .NET 9 中删除:有哪些替代方案
微软已经放弃了对 .NET 9 中 Swagger UI 包 Swashbuckle 的支持。他们声称该项目“不再由社区所有者积极维护”并且“问题尚未得到解决”。 这意味着当您使用 .NET 9 模板创建 Web API 时,您将不再拥有 UI 来测试您的 API 端点。 我们将调查是否可以在 .NET 9 中使用…...
嵌入式八股ARM篇
前言 ARM篇主要介绍一下寄存器和中断机制,至于汇编这一块…还请大家感兴趣自行学习 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函数传参 R4 - R11用来保存程序运算的中间结果或函数的局部变量 在函数调用过程中 注意在发生异常的时候 cortex-M0架构会自动将R0-R3压入…...
MyBatis 如何解析 XML 配置文件和 SQL 映射文件
MyBatis 使用 SAX(Simple API for XML)解析器来解析 XML 文件,SAX 是一种基于事件驱动的 XML 解析方式,具有高效、低内存消耗的优点。 MyBatis 主要解析两种类型的 XML 文件: 核心配置文件 (mybatis-config.xml): 定…...
使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法
使用DeepSeek和墨刀AI,写PRD文档、画原型图的思路、过程及方法 现在PRD文档要如何写更高效、更清晰、更完整? 还是按以前的思路写PRD,就还是以前的样子。 现在AI这么强大,产品经理如何使用DeepSeek写PRD文档,产品经…...
【VUE2】第五期——VueCli创建项目、Vuex多组件共享数据、json-server——模拟服务端api
黑马程序员视频地址:091-vuex的基本认知_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1HV4y1a7n4?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p91 目录 1 VueCli 自定义创建项目 2 Eslint代码规范 2.1 规…...
rpmlib(SetVersions) is needed by can-uilts-v2019.00.0-alt1.aarch64
在我在Linux中安装离线CAN工具时,出现了一个问题, rootwanghuo:~# rpm -ivh can-uilts-v2019.00.0-alt1.aarch64.rpm error: Failed dependencies:rpmlib(SetVersions) is needed by can-uilts-v2019.00.0-alt1.aarch64 意思是尝试安装 can-uilts-v20…...
CNN 稠密任务经典结构
FCN UNet FPN FCNUNETFPNpadding无(逐渐变小) 有(左右对称)上采样 双线性双线性 最近邻跳跃链接 相加 Cropcat 1x1卷积相加 三个网络差不多,UNet名字最直观,后续流传…...
算法刷题整理合集(二)
本篇博客旨在记录自已的算法刷题练习成长,里面注有详细的代码注释以及和个人的思路想法,希望可以给同道之人些许帮助。本人也是算法小白,水平有限,如果文章中有什么错误或遗漏之处,望各位可以在评论区指正出来…...
STM32配套程序接线图
1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…...
Houdini学习笔记
1. Houdini中一次只能显示一个物体 如果要都显示 需要 merge 节点 粉色的是 以参考显示 2.对任意一个节点按F1 可以弹出houdini官方文档 3. 恢复视角 Space H,居中 Space G 居中选中物体...
