requests库/urllib3库返回WEB响应内容的处理差异

requests库是一个广泛使用的HTTP库,用于发送HTTP请求和处理响应。
以下是requests库中一些主要类和方法的详细介绍:
requests库主要类和方法
类:
requests.models.Response:
status_code: 响应状态码。
text: 以Unicode形式返回响应内容。
content: 以字节形式返回响应内容。

headers: 响应头信息。
json(): 将响应内容解析为JSON格式。
方法:
requests.request(method, url, **kwargs):发送HTTP请求,并返回Response对象。可以指定请求方法、URL,以及其他参数。
requests.get(url, params=None, **kwargs):发送GET请求,并返回Response对象。可以指定URL、查询参数等。
requests.post(url, data=None, json=None, **kwargs):发送POST请求,并返回Response对象。可以指定URL、表单数据、JSON数据等。
requests.put(url, data=None, **kwargs):发送PUT请求,并返回Response对象。
requests.delete(url, **kwargs):发送DELETE请求,并返回Response对象。
requests.head(url, **kwargs):发送HEAD请求,并返回Response对象。
requests.options(url, **kwargs):发送OPTIONS请求,并返回Response对象。
requests.Session():创建一个会话对象,可以跨多个请求保持会话状态,共享Cookie等信息。
requests.exceptions.RequestException:所有requests库的异常的基类。

requests库中,Response对象的content属性字节形式返回响应内容。这个属性返回的是原始的字节数据,通常用于处理非文本内容(如图片、视频等)的响应。 
requests库中,Response对象的text属性Unicode形式返回响应内容,以便进行文本处理和解析。

import requests# 发送GET请求
response = requests.get('https://www.example.com')# 获取响应内容的Unicode形式
response_text = response.text# 打印响应内容的前100个字符
print(response_text)

---------------------------------------
urllib3库提供了许多类和方法,用于发送HTTP请求、管理连接池、处理代理、证书验证等功能。
以下是urllib3库中最常用的类及其方法的简要介绍:
urllib3.PoolManager类
request(method, url, fields=None, **urlopen_kw):发送HTTP请求并返回HTTPResponse对象。可以指定请求方法、URL,以及其他参数。
urlopen(method, url, body=None, headers=None, retries=3, redirect=True, assert_same_host=True, timeout=Timeout.DEFAULT_TIMEOUT, pool_timeout=None, release_conn=None, chunked=False, body_pos=0, fields=None, preload_content=True, decode_content=True, retries=Retry.DEFAULT, **response_kw):发送HTTP请求并返回HTTPResponse对象。与request方法类似,但提供更多的参数选项。

urllib3.HTTPResponse类
status:获取响应状态码。
data:获取响应的原始字节流数据response.data.decode('utf-8') # 将原始字节流解码为字符串
headers:获取响应头信息。
连接管理
urllib3.connection_from_url(url, **kw):根据URL创建一个连接对象。
urllib3.make_headers(**headers):创建HTTP请求头。
urllib3.disable_warnings(category=InsecureRequestWarning):禁用特定的警告类别。
异常类
urllib3.exceptions.MaxRetryError:超过最大重试次数时引发的异常。
urllib3.exceptions.SSLError:SSL证书验证失败时引发的异常。

import urllib3# 创建一个PoolManager对象
http = urllib3.PoolManager()# 发送GET请求并获取响应对象
response = http.request('GET', 'https://www.example.com')# 检查响应状态码
if response.status == 200:# 读取并打印网页内容html_content = response.data.decode('utf-8')print(html_content)
else:print("Failed to fetch the webpage. Status code:", response.status)

 在urllib3中,使用data属性来获取响应的原始字节流数据。可以将这些数据解码为字符串,如UTF-8编码,以获取文本内容。

import urllib3
import jsonhttp = urllib3.PoolManager()data = {'attribute': 'value'}
encoded_data = json.dumps(data).encode('utf-8')response = http.request('POST','http://httpbin.org/post',body=encoded_data,headers={'Content-Type': 'application/json'}
)print(response.status)
print(response.data.decode('utf-8'))

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

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

相关文章

MySQL的主从同步原理

MySQL的主从同步(也称为复制)是一种数据同步技术,用于将一个MySQL服务器(主服务器)上的数据和变更实时复制到另一个或多个MySQL服务器(从服务器)。这项技术支持数据备份、读写分离、故障恢复等多…

帝国cms7.5仿非小号区块链门户资讯网站源码 带手机版

帝国cms7.5仿非小号区块链门户资讯网站源码 带手机版 带自动采集 开发环境:帝国cms 7.5 安装环境:phpmysql 包含火车头采集规则和模块,采集目标站非小号官网。 专业的数字货币大数据平台模板,采用帝国cms7.5内核仿制&#xff0…

LeetCode_22_中等_括号生成

文章目录 1. 题目2. 思路及代码实现(Python)2.1 暴力法2.2 回溯法 1. 题目 数字 n n n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入: n 3 n 3 …

Ai-WB2-32S在window下使用vs 和 msys2编译以及烧录

文章目录 前言一、使用前准备第一步 安装vscode第二步 安装msys2 二、使用步骤1.打开MSYS2 MINGW64(1)在开始栏中找到MSYS2 MINGW64并打开(2)安装git(3)安装make(4)安装好之后的文件…

前端面试练习24.3.1

一.进程和线程的区别 进程:是程序的一次执行过程,拥有独立的内存空间 线程:是进程中的一个执行单元,共享所属进程的内存空间和系统资源 进程(Process)和线程(Thread)是操作系统中的重要概念,它…

Redis 之五:Redis 的主从复制

概念 主从复制,是指将一台 Redis 服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节…

【0272】postgres内核分配 MyBackendId 实现原理(MyBackendId、MyProc、shmInvalBuffer)(三)

相关文章: 【0255】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(一) 【0256】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(二) 第一个backend process前,shmInvalBuffer的值情况 (gdb) p *shmInvalBuffer $153 = {minMsgNum =

webpack-cli

webpack-cli做了什么 webpack-cli 是 Webpack 提供的命令行工具,用于在命令行中执行 Webpack 相关的操作。webpack-cli 主要完成以下几项工作: 解析和处理命令行参数:webpack-cli 负责解析用户在命令行中输入的参数,包括配置文件…

云天励飞战略投资神州云海,布局机器人市场

日前,AI上市企业云天励飞(688343.SH)完成了对深圳市神州云海智能科技有限公司(以下简称“神州云海”)的B轮战略投资。 公开资料显示,自2015年于深圳创立以来,神州云海始终聚焦人工智能与服务机器人广阔的应用市场,依托自主的核心算法能力,深耕机器人硬件本体研发,整合上下游产…

Java学习笔记001——入门基础知识

Java语言是一种高级编程语言,它采用了面向对象编程的思想,具有跨平台性和安全性等优点。现如今,Java语言成为了世界上最流行的编程语言之一。 前一段学习Python语言,本文是学习java的第一篇笔记。 1. java运行环境搭建&#xff…

RabbitMQ-TTL/死信队列/延迟队列高级特性

文章目录 TTL死信队列消息成为死信的三种情况队列如何绑定死信交换机 延迟队列RabbitMQ如何实现延迟队列 总结来源B站黑马程序员 TTL TTLTTL(Time To Live):存活时间/过期时间当信息到达存活时间后,还没有被消费,会被自动清除。RabbitMQ可以对消息设置过…

Win10系統如何重置系统

Win10系統如何重置 大家可以使用Win10內建的重設電腦設定,如以下操作: 首先,可以先到桌面左下角的【開始】 選擇【設定】 在【設定】裡找到【更新與安全性】 在左側欄有一項【復原】 在復原的標題下,副標題有一項【重設此電腦】…

【algorithm】算法基础课---排序算法(附笔记 | 建议收藏)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:AcWing算法学习笔记 💬总结:希望你看完…

tvm交叉编译参考资料整理

环境 ubuntu20.04,ndk交叉编译部署到adnroid手机 参考: TVM部署神经网络模型到android端_tvm android-CSDN博客 使用TVM在android中进行Mobilenet SSD部署 - 知乎

深度探析低代码:助力“数智转型”赋能中国制造

随着数字化和智能化技术的飞速发展,我国制造业正面临着从传统制造向智能制造的转型升级。在这个过程中,低代码技术作为一种创新性的软件开发模式,逐渐成为助力我国制造业数智转型的关键驱动力。本文将从低代码技术的原理、应用场景以及在我国…

​The Sandbox的南极之旅|链接世界:从南极洲到元宇宙

真正的发现之旅不在于寻找新的景观,而在于拥有新的眼光。 - 马塞尔-普鲁斯特 在这个数字世界和物理世界日益交织的时代,The Sandbox 的联合创始人 Arthur Madrid 和 Sebastien Borget 踏上了远离数字空间的旅程,前往地球上未被开发的宝藏地点…

无用工作、UBI与AI

有些隐晦和黑暗的事实无法陈述,因为任何的系统中“无用”的结局都是被无情的抛弃和淘汰,AI监督下的人类结局更是如此。 什么是无用工作? 无用无效工作通常指的是那些看似忙碌但实际上对社会或个人没有实质性贡献的工作。这类工作可能包括以下…

2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024)

2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024) 一、【会议简介】 2024环境工程、能源系统与化学材料国际会议(ICEEESCM 2024)将于2024年在西安举行。会议将围绕环境工程、能源系统与化学材料等议题展开讨论,旨在为从事环境工程…

ABB双语言共享充电宝投资理财源码/共享充电宝系统源码/共享充电宝市场分析/五级分销返利+地图显示模式

ABB双语言共享充电宝投资理财源码/五级分销返利地图显示模式/vue编译后前端 测试环境:Linux系统CentOS7.6、宝塔、PHP7.3、MySQL5.6,根目录public,伪静态laravel5, 源码下载:https://download.csdn.net/download/m0_…

人脸高清算法GFPGAN之TensorRT推理

1. 综述 最近由于做数字人项目,采用的是wav2lip GFPGAN进行人脸面部高清,但GFPGAN模型本身比较大,所以想着使用TensorRT来代替原始的pth推理看看能否提升运行速度,于是便开始了这趟windows1之下进行GFPGAN的trt推理的折腾之旅。…