从0开始python学习-39.requsts库
目录
HTTP协议
1. 请求
2. 响应
Requests库
1. 安装
2. 请求方式
2.1 requests.请求方式(参数)
2.2 requests.request()
2.3 requests.session().request()
2.4 三种方式之间的关联
3. 请求参数
3.1 params:查询字符串参数
3.2 data:Form表单参数
3.3 json:json参数
3.4 files:文件参数
4. 响应内容
HTTP协议
1. 请求
1.1 请求行:请求方式,请求路径,协议
1.2 请求头
- Content-Type:客户端发送的数据格式
- application/x-www-form-urlencoded:表单格式
- application/json:json数据
- multipart/form-data:文件上传
- application/octrent-stream:二进制文件上传
- Accept:接收的数据格式
- X-Requested-with:异步请求
- User-Agent:客户端类型
- Cookie:Cookie信息
1.3 请求正文; 请求数据,字节流
2. 响应
2.1 响应行:状态码,状态信息
2.2 常见状态码:
-
200 请求成功
-
201 创建成功
-
204 没有内容可响应
-
301 永久重定向
-
302 临时重定向
-
401 没有提高身份信息
-
403 权限不足
-
404 资源不存在
-
405 请求方法不允许
-
429 请求太频繁
-
500 本地服务器挂了
-
502 远程服务器挂了
2.3 响应头--示例:Content-Type: image/png
2.4 响应数据:字节流
Requests库
1. 安装
pip install requests
2. 请求方式
2.1 requests.请求方式(参数)
这里请求方式常用的基本上就是get,post,delete,put这几种,其中最常用的就是get和post
requests.get(url, params=None, **kwarg)
requests.post(url, data=None, json=None, **kwargs)
requests.delete(url, **kwarg)
requests.put(url, data=None, **kwargs)
2.2 requests.request()
requests.request(method, url, **kwargs)
从原码可以看到method其实就是2.1中的那几种请求方式
查看2.1中请求方式原码可以看到,2.1方法调用的底层代码其实就是2.2的方法

2.3 requests.session().request()
通过session的方式调用,可以够自动的处理有cookie关联的接口,当有cookie需要关联是建议使用这种请求方式
requests.session().request(self,method, # 请求方式url, # 请求路径params=None, # params参数:查询字符串参数,在接口路径后面以?传递的参数,多个参数之间用&分隔data=None, # 表单参数:Content-Type:application/x-www-form-urlencodedheaders=None, # 请求头cookies=None, # cookiesfiles=None, # 文件参数:Content-Type:multipart/form-dataauth=None, # 鉴权timeout=None, # 超时allow_redirects=True, # 是否重定向,True-是proxies=None, # 代理设置hooks=None, # 钩子:用来控制部分请求过程,或信号事件处理stream=None, # 文件下载:用于控制是否立即下载响应体,默认情况下是stream=Ffalseverify=None, # 证书cert=None, # ca证书json=None, # json参数:Content-Type:application/json)
1. 在请求行传递参数: method、url、params
2. 在请求头传递参数:headers、cookies
3. 在请求正文传递参数:data、files、json
(1). json和其他会冲突
(2). 单独传的情况:
-
data会进行编码 : content-type: application/x-www-form-urlencoded
-
files会增加分隔符 content-type: multipart/form-data;boundary=6d0c340d943891526bd14fab465025bb
-
josn格式直接传: content-type: application/json
-
data传递的不是字典时,没有 content-type
4. 设置请求接口时的传输细节:auth、timeout、allow_redirects、proxies、verify
2.4 三种方式之间的关联
requests.get -> requests.request("GET") -> Session().request("get")
requests.post -> requests.request("post") -> Session().request("post")
3. 请求参数
3.1 params:查询字符串参数
params = {"name":"ces","age":18}
url = 'http://192.168.1.1:8088/list'
requests.get(url=url,params=params)
- params参数在接口路径后面以?传递的参数,多个参数之间用&分隔
- 对参数内容进行了urlencode编码(内容以ASCII的方式呈现)

3.2 data:Form表单参数
data = {"name":"张三","age":18}
url = 'http://192.168.1.1:8088/list'
requests.get(url=url,data=data)
- 自动添加了一个请求头:Content-Type: application/x-www-form-urlencoded
- 对参数内容进行了urlencode编码

3.3 json:json参数
json = {"name":"张三","age":18}
url = 'http://192.168.1.1:8088/list'
requests.get(url=url,json=json)
- 添加请求头:Content-Type: application/json
- 对参数进行:Unicode编码

3.4 files:文件参数
上传已存在的文件
url = 'http://192.168.1.1:8088/list'
file = {"uploads":open("D:/work/test.txt")}
requests.get(url=url, files=file)
- 添加请求头:Content-Type: multipart/form-data
- 构建了一个表单参数,把文件的内容以二进制的方式加到body里面

上传不存在的文件
url = 'http://192.168.1.1:8088/list'
file = {"uploads":("test1.txt","test11111","text/plain")}
requests.get(url=url, files=file)
这里如果不知道上传的文件的Content-Type是啥可以直接进行百度然后找到对应的即可

上传多个文件
url = 'http://192.168.1.1:8088/list'
file = {"uploads1":open("D:/work/test.txt"),"uploads2":("test1.txt", "test11111", "text/plain")}
requests.get(url=url, files=file)
注意这里name不能重复了
同时传递表单参数和文件参数---此时表单不会进行urlencode编码
url = 'http://192.168.1.1:8088/list'
file = {"uploads1":open("D:/work/test.txt"),}
data = {"name":"张三","age":18}
requests.get(url=url, data=data, files=file)
因为文件上传方式会自动添加请求头:Content-Type: multipart/form-data,所以可以和表单一起同时传递

4. 响应内容
print(res.text) # 返回字符串类型的数据
print(res.content) # 返回二进制类型的数据
res.json() # 把json字符串转化为字典格式返回
print(res.status_code) # 状态码
print(res.reason) # 状态信息
print(res.cookies) # cookie信息
print(res.encoding) # 编码格式
print(res.headers) # 响应头
print(res.elapsed) # 耗时
print(res.request.method) # 请求方式
print(res.request.url) # 请求路径
print(res.request.headers) # 请求头
print(res.request.body) # 请求数据
相关文章:
从0开始python学习-39.requsts库
目录 HTTP协议 1. 请求 2. 响应 Requests库 1. 安装 2. 请求方式 2.1 requests.请求方式(参数) 2.2 requests.request() 2.3 requests.session().request() 2.4 三种方式之间的关联 3. 请求参数 3.1 params:查询字符串参数 3.2 data:Form表单…...
【面试高频算法解析】算法练习3 双指针
前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯双指针滑动窗口深度优先搜索…...
React16源码: Why16, 研究源码的意义, 源码目录核心结构分析
为什么要选择React16 现在React18都早已实践很多,为何回过头来看16版本的代码理由如下 从实际出发,企业内老旧项目多为16版本,理解16的核心能够帮助我们快速解决问题16版本React是完全重写了核心代码, 是一次重大的更新 引入了 fiber 这个概…...
mybatis-flex笔记
MyBatis-Flex 的增删改功能 - MyBatis-Flex 官方网站https://mybatis-flex.com/zh/base/add-delete-update.html 代码https://gitee.com/hntianshu/mybatis-flex-test 一 新增数据 不忽略 null 值。 就是允许有null 忽略null 就是不允许有null BaseMapper 的接口提供了 inser…...
Debezium发布历史47
原文地址: https://debezium.io/blog/2019/02/13/debezium-0-9-1-final-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.9.1.Final 发布 二月 13, 2019 作者: Gunna…...
Python爬虫抓包常见问题解决
对于Python爬虫和Fiddler抓包,可能遇到的问题及解决: 代理设置错误:如果你在使用Python爬虫时遇到抓不到包的问题,首先应该检查你的浏览器代理设置是否正确。以Chrome为例,代理设置为:右上角菜单按钮>设…...
c++跨平台ui
fltk https://gitee.com/mirrors_fltk/fltk.git codeblock中有fltk项目开发模板,可以快速构建项目 wxwidget https://gitee.com/sofu456/wxWidgets.git git submodule update --init --recursive 打开demo和sample set(wxBUILD_SAMPLES ALL) set(wxBUILD_DEMOS ON) build/…...
stable diffusion 基础教程-提示词之艺术风格用法
展现夕阳 golden hour, (rim lighting):1.2, warm tones, sun flare, soft shadows, vibrant colors, hazy glow, painterly effect, dreamy atmosphere阴影 chiaroscuro, (high contrast):1.2, dramatic shadows, bold highlights, moody atmosphere, captivating inte…...
【日积月累】Java中 正则表达式
目录 日积月累】Java中 正则表达式 1.前言2.基本语法3.Pattern和Matcher类4.校验的表达式大全5.参考文章所属专区 日积月累 1.前言 正则表达式是一种用于匹配文本模式的语法,它通常与编程语言一起使用。在Java中,正则表达式用于匹配字符串,可以使用Pattern和Matcher类来实…...
Java调用百度云语音识别【音频转写】
百度云文档 ttps://ai.baidu.com/ai-doc/SPEECH/Bk5difx01 示例代码: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.json.JSONObject; import org.springframework.stereotyp…...
pyparamvalidate 项目背景和需求分析
目录 一、前置说明1、总体目录2、本节目标 二、项目背景三、需求分析三、后置说明1、要点小结2、下节预告 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、本节目标 阐述 pyparamvalidate 项目背景和需求分析。 二、项目背景…...
Docker Linux快速安装及Nginx部署
前言 最近正在部署一套新的Linux服务器环境,基于Docker来部署所有的应用,顺便整理了一套经过验证的操作手册,以便大家遇到类似需求时,可以直接拿来用。 本文会涉及以下知识点:Docker的Linux安装和卸载、Docker用户组…...
Mac M1 Parallels CentOS7.9 Install Parallels Tools
一、挂载parallels-tools安装包 mkdir /media/cdrom/ mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载二、GCC升级 yum install -y centos-release-scl yum install -y devtoolset-8-gcc*# 切换当前会话中gcc版本为8 scl enable devtool…...
计算机网络物理层 习题答案及解析
2-1 下列选项中,不属于物理层接口规范定义范畴的是( D )。 A. 引脚功能 B. 接口形状 C. 信号电平 D. 传输媒体 【答案】D 【解析】 2-2 某网络在物理层规定,信号的电平范围为- 15V~15V , 电线长…...
【解决】Unity 设置跨设备分辨率表现
开发平台:Unity 2018版本以上 开发语言:CSharp 编程平台:Visual Studio 2022 问题描述 使用 UnityEngine.dll 中关于设置分辨率的方法时,无法满足应用以设定分辨率进行屏幕显示问题。因而造成画面不同程度的拉伸情况。而这种情…...
基于单片机的智能衣柜设计
一、摘要 随着科技的不断发展,人们对于生活品质的要求越来越高。智能衣柜作为智能家居的一个重要组成部分,能够为用户提供便捷、个性化的衣物管理服务。本文主要研究了基于单片机的智能衣柜设计,通过对硬件系统和软件系统的设计与实现&#…...
HttpSession的使用
1 HttpSession 概述 在 Java Servlet API 中引入 session 机制来跟踪客户的状态。session 指的是在一段时间内,单个客户与 Web 服务器的一连串相关的交互过程。在一个 session 中,客户可能会多次请求访问同一个网页,也有可能请求访问各种不同…...
人工智能在金融领域的应用存在的4大挑战
金融服务供应商应该有计划地应对AI面临的难题 金融行业投资人工智能热潮带来有关数据安全和透明度的新问题。由于数据管理实践随着新的 AI 解决方案的引入而不断发展,应对这些新问题以及金融服务领域 AI 面临的其他挑战尤为重要。各组织必须认识到可能面临以下挑战…...
EasyExcel写出包含多个sheet页的Excel
https://blog.csdn.net/qq_38751895/article/details/131852740...
分类预测 | Matlab实现RP-CNN-LSTM-Attention递归图优化卷积长短期记忆神经网络注意力机制的数据分类预测【24年新算法】
分类预测 | Matlab实现RP-CNN-LSTM-Attention递归图优化卷积长短期记忆神经网络注意力机制的数据分类预测【24年新算法】 目录 分类预测 | Matlab实现RP-CNN-LSTM-Attention递归图优化卷积长短期记忆神经网络注意力机制的数据分类预测【24年新算法】分类效果基本描述模型描述程…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
数据挖掘是什么?数据挖掘技术有哪些?
目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...
