首页 > 其他分享 >requests的学习

requests的学习

时间:2023-08-04 12:11:08浏览次数:28  
标签:cookies 请求 学习 json 参数 requests response

response的解析

解析请求的url: r.url

解析响应状态码:r.ststus_code

image

解析文本类型的response: r.text

image
r.text 用于解析respose内容为文本类型 requests会自动解码其中的内容

image
r.encoding #查看requests使用了什么编码或者设置自己的编码
如果你改变了编码,每当你访问 r.text ,Request 都将会使用 r.encoding 的新值

解析非文本类型的response: r.content

image
返回内容的类型为bytes

解析json格式的响应内容:r.json()

image

获得原始的socket response: r.raw

在罕见的情况下,你可能想获取来自服务器的原始套接字响应,那么你可以访问 r.raw,并设置 stream=True
image

获得response的headers

r = requets.post(xxxxx)
# 输出所有的header
print(r.headers)
# 输出Content-Type这个header值
print(r.headers['Content-Type'])

设置请求的header

为请求添加HTTP header,只要简单地传递一个 dict 给 headers 参数就可以了
image

下图是baidu接口的header字段
image

请求参数设置

参数拼接在url的?后面

image
image
如上,需要把具体参数放在一个由string类型的数据组成的dict里面,赋值给params这个参数字段名。 打印出请求的url,可以看到参数被编码进了url里面
在url中拼接请求参数常见于一些get请求

post请求的的请求参数

把请求参数作为form-encoded data(表单数据)发送

image
如上,把参数写在dict里面然后传递给data字段名
如果key和value的关系是一对多的关系,还可采用下面的两种形式存放参数
image

把请求参数作为json形式发送

image
如上,把参数数据从py对象手动转为json,然后传递给data字段名。
不过上面由于没有设置请求的header 即"Content-Type": "application/json",所以实际请求时可能不会把参数作为json发送出去,添加header如下
image

更方便的形式,是把参数传给json字段名,requests会自动帮我们自动转为json并添加header(2.4.2版本开始)
image

如果requests传递的参数中有参数data或者files,那么json参数会被自动忽略

cookies

在请求参数中携带cookie

把cookie的key与value放在dict中,然后传给参数字段cookies
image
结果
image

另一种方式是把cookie数据放在requests.cookies.RequestsCookieJar()中,然后传给参数字段cookies
RequestsCookieJar类型和dict和dict的操作和相似,适合跨域名和路径使用
image

解析response中的cookie

response中返回的cookies其类型为RequestsCookieJar

r = requests.get(xxxx)
#输出cookie,假设其中存在xxxxkey_of_cookies这样一个字段
print(r.cookies['xxxxkey_of_cookies'])

超时

HTTP请求发出后,在设定的时间内(timeout参数),还没有收到response,就不再等待response,直接抛出异常
image

image

关于超时的定义 官网文档有如下解释
image
简单说,超时与下载需要的时间无关,无论下载需要多久,都表示已经收到response了,超时是针对请求对应的服务的的response而言,在设定的时间内,如果一个字节的的socket response都没有,就是超时

错误与异常

所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException

ConnectionError 异常

在出现网络问题、DNS查询失败、连接服务器失败等因素后,Requests 会抛出一个 ConnectionError 异常
如下,故意连接到一个不存在的url
image
执行结果
image

HTTPError 异常

发出HTTP请求后得到的response状态码以4或5开头(a 4XX client error or 5XX server error response), 通过方法:Response.raise_for_status(),可以手动释放一个异常
下面请求一个本地的httpbin服务接口
image

image

timeout 异常

TooManyRedirects 异常

若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常

标签:cookies,请求,学习,json,参数,requests,response
From: https://www.cnblogs.com/MyRecords/p/17596580.html

相关文章

  • Vue学习 2.0 版本笔记
    Vue学习一、前端知识体系HTML(结构):超文本标记语言(HyperTextMarkupLanguage),决定网页的结构和内容CSS(表现):层叠样式表(CascadingStyleSheets),设定网页的表现样式JavaScript(行为):是一种弱类型脚本语言,其源代码不需经过编译,而是由浏览器解释运行,用于控制网页的行为表现层(CSS)CS......
  • Java 诊断工具 Arthas 教程学习笔记
    Java诊断工具Arthas教程学习笔记 Java诊断利器Arthas,是阿里的一款开源工具。Github-alibaba/arthas 上可以看到它的介绍。了解它,主要是最近对分析Java错误堆栈比较感兴趣,机缘巧合看到了它。本文记录的内容,就是基于它官网的文档摘抄的,涉及的截图可能由于篇幅有限,不是......
  • 【华秋推荐】物联网入门学习模块 ESP8266
    随着全球信息技术的不断进步和普及,物联网成为当今备受关注的技术热点之一。通过物理和数字设备之间的连接来实现自动化和互联互通的网络。无线传感器、云计算和大数据分析等技术,物联网使设备能够相互交流和共享信息,实现智能化的自动化操作。它连接着各种物体,实现物与物的互联互通......
  • HTTP隧道识别与防御:​ 机器学习的解决方案
    HTTP隧道识别与防御:机器学习的解决方案随着互联网的快速发展,HTTP代理爬虫已成为数据采集的重要工具。然而,随之而来的是恶意爬虫对网络安全和数据隐私的威胁。为了更好地保护网络环境和用户数据,我们进行了基于机器学习的HTTP代理爬虫识别与防御的研究。以增强对HTTP代理爬虫的识别和......
  • Java学习笔记(二)
    第二章Java的基础语法2.1Java的注释1、注释是干什么的?给程序员(人)看的,辅助程序员理解代码的解释性的文字。2、注释的形式有3种(1)、单行注释//注释内容(2)、多行注释/* 注释内容1 注释内容2 注释内容3*/(3)、文档注释/** 文档注释内容*/文档注释可以被javadoc.exe工具读取,生......
  • python教程 入门学习笔记 第6天 数据类型转换 字符串转换成数值 数值之间互转 其它类
    4、数据类型转换1)字符串转换成数值:int()-----------将值转换成整数float()-----------将值转换成小数str()-----------将值转换成字符串bool()-----------将值转换成布尔值例如:int()将值转换成整数s1="188"#字符串ns1=int(s1)#转换成整型数值print(ns1+8)#打印数......
  • 如何学习AI大模型?
    AI介绍近年来,随着人工智能技术的快速发展,大模型成为了人们关注的焦点之一。这些大模型以其强大的计算能力和学习能力,为我们带来了许多惊喜和创新。本文将探讨AI大模型的美妙之处。首先,AI大模型在自然语言处理方面表现出色。通过深度学习的方法,这些模型能够理解和生成人类语言,实现自......
  • Jenkins学习-01(Jenkins学习的目的、Jenkins的作用)
    一、学习的目的因为从刚刚进入公司开始,就在使用Jenkins进行发版。虽然逐渐的会使用了Jenkins但是,对于自己还是一个完全的黑箱状态,所以说打算对Jenkins进行完整的学习并且加以记录,方便自己日后进行回顾。ps:本次学习使用的是尚硅谷的在b站发布的Jenkins教程。地址:01-Jenki......
  • 算法工程师学习运筹学 笔记一 P,NP,NPC问题
    算法的时间复杂度我之前理解的时间复杂度,是指的解决一个问题所需要的时间。但其实并不准确,时间复杂度应该是 当问题规模扩大后,程序需要的时间长度增长得有多快。时间复杂度有两种类型:一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;......
  • 【GAN】是什么让GAN成为了这5年里深度学习领域最亮的崽?
    在游戏、VR领域颠覆传统人类美工的工作方式生成全真实的场景GAN说:“我能行!”VR场景在电影、视频领域使全虚拟演员、偶像成为可能一种全新的感觉和体验GAN说:“我可以!”假明星脸生成虚拟偶像在电子商务领域想要实现真实的“虚拟试衣间”足不出户就可以体验买买买GAN说:“我可以!”虚拟......