【Python】requests的response.text 和 urllib.request 的 response.read()的区别
刚写代码的时候,我经常会把requests 和 urllib下的request 包搞混,这两个请求响应的方法看起来很相似,但是写获取的方法是不一样的。
前者requests 是用response.text 来获取源码,而 urllib.request是用 response.read() 来获取html内容的,他们返回的响应内容也不一样,获取响应的状态码也会不一样。
如果搞混读取的方法,可能就会出现:【‘Response’ object has no attribute ‘read’】的问题:
或者状态值获取不对时出现【‘Response’ object has no attribute ‘status’】的问题:
具体的区别:
1. response.text:
在Python的requests库中,它的使用示例如下:
# 使用response.text读取文本内容
import requests# 发送GET请求
response = requests.get('https://example.com')text_content = response.text
print('获取响应状态:',response.status_code)
print(type(text_content)) #str
print(text_content)#==============结果:==================================
<!doctype html>
<html>
<head><title>Example Domain</title><meta charset="utf-8" /><meta http-equiv="Content-type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><style type="text/css">body {background-color: #f0f0f2;margin: 0;padding: 0;font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;}div {width: 600px;margin: 5em auto;padding: 2em;background-color: #fdfdff;border-radius: 0.5em;box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);}a:link, a:visited {color: #38488f;text-decoration: none;}@media (max-width: 700px) {div {margin: 0 auto;width: auto;}}</style>
</head><body>
<div><h1>Example Domain</h1><p>This domain is for use in illustrative examples in documents. You may use thisdomain in literature without prior coordination or asking for permission.</p><p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
requests库的response.text的特点:
- 返回内容:返回的是解码后的【Unicode字符串】,str
- 解码方法:它自动解码响应体,通常是使用响应头中的
Content-Type和charset参数,自动选择合适的编码来解码响应内容。 - 适用场景:这个方法通常用于读取文本内容,如HTML、JSON或XML。
2. response.read():
urllib.request模块的response.read()的特点:
- 返回内容:返回响应体的【原始字节串】, bytes。
- 解码方法:不进行任何解码,直接返回二进制数据。
- 适用场景:它常用于读取非文本内容,如图片、视频或二进制文件。
它的使用示例如下:
# 使用response.read()读取原始字节数据
from urllib.request import urlopenresponse=urlopen('https://example.com')
print('获取响应状态:',response.status)
binary_content = response.read()
print(type(binary_content)) #<class 'bytes'>
print(binary_content)
#==============结果:==================================
b'<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n <p>This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.</p>\n <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'
3.主要区别
-
解码:
requests的response.text自动解码,而urllib.request的response.read()返回原始字节数据。 -
获取响应状态的方式:
requests的是用status_code,而urllib.request的是status -
易用性:
requests提供了更高级的接口和更多的便利功能,如会话管理、Cookie持久化等; 而urllib.request提供了更多的控制和灵活性,但使用起来可能更复杂。 -
库的依赖:
requests不是Python标准库的一部分,需要单独安装,通常被认为是更高级、更易用的HTTP库;而urllib.request是Python标准库的一部分,无需额外安装。 -
处理结果上:
response.text可以直接对返回的字符串进行操作,比如解析JSON或HTML;
而使用response.read()时,可能需要先将二进制数据转换为适当的格式,比如使用BytesIO来处理二进制数据,或者将其解码为字符串才能使用!
总之,我们在使用的过程中,大家要注意两者不要搞混了哈~
相关文章:
【Python】requests的response.text 和 urllib.request 的 response.read()的区别
刚写代码的时候,我经常会把requests 和 urllib下的request 包搞混,这两个请求响应的方法看起来很相似,但是写获取的方法是不一样的。 前者requests 是用response.text 来获取源码,而 urllib.request是用 response.read() 来获取h…...
Obsidian插件安装与开发
大概背景 事情的起因还是因为做笔记,我喜欢利用插件Obsidian Git自动同步笔记到Gitee,写md文档有个问题就是关于图片如何存储。 我个人习惯是将所有图片都保存到指定的文件夹下,如图👇 由于Obsidian对粘贴图片默认格式为这样的&…...
lvs的dr模式实现
目录 一、实验环境准备 1、五台红帽9系统的主机 2、关闭所有的防火墙以及关闭selinux 二、在lvs中配置 1、在lvs中安装lvs软件并设置开机启动 2、在lvs中打开内核路由功能,并把它写入/etc/sysctl.conf文件中 3、webserver1和webserver2下载httpd 4、在lvs主机…...
免费写作神器,自动生成高质量文章
在当今数字化的时代,信息的传播和创作变得前所未有的重要。无论是企业的营销推广、个人的博客写作,还是学术研究报告,优质的文章都能发挥巨大的作用。而随着人工智能技术的飞速发展,免费的ai写作工具应运而生,为我们带…...
C#属性
属性(property)的概念是:它是一个方法或一对方法,在客户端代码看来,他(们)是一个字段。 下面把前面示例中变量名为_firstName的名字字段改为私有。FirstName属性包含get和set访问器,来检索和设置支持字段的…...
Spring的代理模式
目录 1、什么是代理模式? 2、为什么要用代理模式? 3、有哪几种代理模式? 4、静态代理 5、动态代理 (1)Proxy动态代理 (2)Enhancer动态代理 (3)dbUtil和动态代理的…...
el-table合计放在标题上方且合并列以及渲染后端返回的数据
el-table二次封装的父组件中的属性 <y-table :table-data"tableData" :table-model"tableModel" :isShowSummary"true" :getSummaries"getSummaries"></y-table>el-table合计放在标题上方 <style lang"scss"…...
magic-api相关应用与配置
目录 项目启动 工具:IDEA 运行项目 关于配置 项目启动 工具:IDEA 新建——》项目——》导入——》运行 运行项目 http://localhost:9999/magic/web/index.htmlhttp://localhost:9999/magic/web/index.html 关于配置 配置多数据源 在线配置多数据…...
AI大模型赋能开发者|海云安创始人谢朝海受邀在ISC.AI 2024大会就“大模型在软件开发安全领域的应用”主题发表演讲
近日,ISC.AI 2024 第十二届互联网安全大会在北京国家会议中心盛大开幕。作为全球规格最高、规模最大、影响力最深远的安全峰会之一,本次大会以“打造安全大模型 引领安全行业革命”为主题,聚焦安全与AI两大领域,吸引了众多行业领袖…...
基于Kahn算法|动态线程池,支持扩展点并发执行|召回|过滤
背景 在《分布式领域扩展点设计稿》一文中,我们提到针对业务横向扩展点和纵向扩展点的编排能力。 那有这样的一种场景:针对于一次会话,同时会调很多外部服务,同时这些RPC服务会有多种直接或间接的关系,是否有更高效的…...
Bootstrap 4 表头固定,tbody滚动条
表格 <div class"row" style"background-color: #fff;overflow: auto;max-height: 500px;"> <table class"table table-striped table-bordered scrolltable text-nowrap"> <thead> …...
MYSQL知识点(持续更新)
数据库 文章目录 数据库Mysql基础篇数据库相关概念MYSQL启动数据库类型关系型数据库 SQL语法SQL通用语法SQL分类DDL - 数据库操作 Mysql基础篇 数据库相关概念 数据库、 存储数据的仓库,数据是组织的进行存储 数据库管理系统 操纵和管理数据库的大型软件 SQL语句…...
html+css网页设计 酷狗首页1个页面 (无js)
htmlcss网页设计 酷狗首页1个页面无js功能 页面还原度80% 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 …...
用户体验至上:9款软件界面设计工具分享
你知道如何选择正确的UI设计软件吗?您知道哪些界面设计软件需要设计美观的用户界面,以及带来良好用户体验的APP吗?根据APP界面的不同功能,制作软件界面的选择也会有所不同。但是,并非要非常精通所有的制作软件界面&…...
Lambda 表达式:解锁编程世界的魔法之门
引言 在这个技术日新月异的时代,编程语言不断进化以适应日益复杂的软件开发需求。其中,Lambda表达式作为一门现代编程语言的重要特性,已经成为了提升代码效率与可读性的关键工具。无论你是刚刚踏入编程领域的新手,还是已经在软件…...
【python】Pandas处理Excel表格用法分析与最佳实践
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
KL 散度(python+nlp)
python demo KL 散度(Kullback-Leibler divergence),也称为相对熵,是衡量两个概率分布之间差异的一种方式。KL 散度是非对称的,也就是说,P 相对于 Q 的 KL 散度通常不等于 Q 相对于 P 的 KL 散度。 一个简…...
四种推荐算法——Embedding+MLP、WideDeep、DeepFM、NeuralCF
一、EmbeddingMLP模型 EmbeddingMLP 主要是由 Embedding 部分和 MLP 部分这两部分组成,使用 Embedding 层是为了将类别型特征转换成 Embedding 向量,MLP 部分是通过多层神经网络拟合优化目标。——用于广告推荐。 Feature层即输入特征层,是模…...
鹏鼎控股:最新面试求职SHL逻辑测评笔试题库讲解及真题分享
鹏鼎控股(深圳)股份有限公司,成立于1999年4月29日,是一家专业从事印制电路板(PCB)设计、研发、制造与销售的企业。公司产品广泛应用于通讯、消费电子、汽车、服务器等多个领域,服务全球市场。鹏…...
【Git】git 不跟踪和gitignore区别
文章目录 不跟踪(Untracked):.gitignore 文件:总结 在 Git 中,不跟踪(untracked)和 .gitignore 文件有不同的作用和用途: 不跟踪(Untracked): 不…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
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 解决方案&…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
