Python+Requests模块获取响应内容

Requests模块获取响应内容

响应包括响应行、响应头、响应正文内容,这些返回的响应信息都可以通过Requests模块获取。这些 获取到的响应内容也是接口测试执行得到的实际结果。

获取响应行

获取响应头

获取其它响应信息

代码示例:

python 复制代码
# 导入requests模块
import requests

r = requests.get("https://www.baidu.com")
print(r.status_code) #响应状态码
print(r.reason) #响应信息
print(r.headers) #获取响应头 返回的是dict类型,可以继续使用get获取指定的值
# 获取其它响应信息:
print(r.url) # 获取请求地址
print(r.cookies) #获取cookies
print(r.encoding) #获取响应的编码格式

响应正文

依据不同响应正文内容的情况,Requests模块有四种不同的处理方式

一、普通文本数据

Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。请求发出后, Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其 推测的文本编码。response.text使用后乱码的几率很大,可以先用response.encoding 属性来改变编码,如下所示:

代码示例:

python 复制代码
# 1,普通文本数据
url = "http://www.hnxmxit.com/"
response = requests.get(url=url)
print(response.content.decode("utf-8"))

查看执行结果:

二、二进制数据

对于非文本请求,response.content能以字节的方式访问请求响应体。且Requests模块会自动为你解码 gzip 和 deflate 传输编码的响应数据

python 复制代码
# 2,二进制数据
response =requests.get("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2073439784,2147418910&fm=26&gp=0.jpg")
print(type(response.content))  # 输出二进制的图片数据类型
with open("E:/baidu.gif","wb") as f:  # 将二进制数据写入到本地文件
    f.write(response.content)

查看执行结果:

三、json数据

Requests 中有一个内置的 JSON 解码器 response.json(),处理返回的 JSON 数据。使用后,会把返回的数据 作为一个python中的json数据对象看待。如果 JSON 解码失败, response.json() 就会抛出一个异常。

python 复制代码
url = 'https://api.weixin.qq.com/cgi-bin/token'
data = {'grant_type':'client_credential',
        'appid':'wxf14419077f707856',
        'secret':'92a113bd4b5ffdc72144740dc7123c99'}
response = requests.get(url=url,params=data)
# 响应是str类型 ,所以我们需要将响应转换成json
json_obj = response.json()
token = json_obj['access_token']
print(token)

四、原始响应内容(一般不使用)

如果需要获取来自服务器的原始套接字响应,可以使用response.raw,如果确定要获取的话,还需要在初始请 求中设置stream=True。

python 复制代码
# 4,原始响应内容(一般不使用)
url = "https://www.baidu.com"
response = requests.get(url=url,stream=True)
print(response.raw.read(10))

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
for_ever_love__9 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI9 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
I Am a robert girl9 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航198310 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程
沙漠之主10 小时前
Python 教学设计资料:从入门到实战的完整课程方案
爬虫·python
知识分享小能手11 小时前
C++ 学习教程,从入门到精通,C++ 友元、异常和其他特性 — 详细知识点(15)
开发语言·c++·学习
ebiobiz12 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu
朝朝辞暮i12 小时前
C++ 第 26 课:对象、指针与 ->
java·开发语言·c++
慢云智慧空间12 小时前
从智能终端到空间AI,慢云科技如何重新定义智慧建筑的核心能力?
人工智能·python·科技
2601_9628857212 小时前
如何用 Python 做股价历史分位选股?(筛出处于历史低位的股票)
开发语言·python