requests库中content和text调用的区别

requests库中r.content 与 r.read() 的使用方式 通过本文的介绍,我们可以看到r.content和r.read()是requests库中两个常用的方法,用于获取HTTP响应的内容。r.content返回一个Bytes-like对象,用于获取二进制数据;而r.read()返回一个字符串,用于获取文本数据。在实际使用中,我们可以根据需要选择合适的方法来获取HTTP响应的内容。除了这些基本用法外,r.content和r.read()还有很多高级用法和参数可以设置。例如,我们可以使用参数stream=True来分块读取大文件; 阅读详情

详情请查看:https://www.jianshu.com/p/0e0336b370f3

 

对requests获取的原始数据,有两种获取形式,一个是r.content一个是r.text。

二者的区别在于content返回的是byte型数据,而text返回的是Unicode数据,也就是说text对原始数据进行的特殊的编码,而这个编码方式是基于对原始数据的猜测(响应头),

text一般用于返回的文本
content的一般用于对返回的其他数据类型

但是对于某些网站的中文用text可能会导致返回乱码,所以最好是使用content然后自己进行重新编码。

requests手册中的描述更加的详细

------------------以下为转载手册内容--------------------------

响应内容

我们能读取服务器响应的内容。再次以 GitHub 时间线为例:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.text
# u'[{"repository":{"open_issues":0,"url":"https://github.com/...

Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。
请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用r.encoding
属性来改变它:

>>> r.encoding'utf-8'
>>> r.encoding = 'ISO-8859-1'

如果你改变了编码,每当你访问 r.text ,Request 都将会使用 r.encoding的新值。你可能希望在使用特殊逻辑计算出文本的编码的情况下来修改编码。比如 HTTP 和 XML 自身可以指定编码。这样的话,你应该使用 r.content来找到编码,然后设置 r.encoding为相应的编码。这样就能使用正确的编码解析 r.text
了。
在你需要的情况下,Requests 也可以使用定制的编码。如果你创建了自己的编码,并使用 codecs
模块进行注册,你就可以轻松地使用这个解码器名称作为 r.encoding
的值, 然后由 Requests 来为你处理编码。

二进制响应内容

你也能以字节的方式访问请求响应体,对于非文本请求:

>>> r.contentb
# u'[{"repository":{"open_issues":0,"url":"https://github.com/...

Requests 会自动为你解码 gzip
和 deflate
传输编码的响应数据。
例如,以请求返回的二进制数据创建一张图片,你可以使用如下代码:

>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))

JSON 响应内容

Requests 中也有一个内置的 JSON 解码器,助你处理 JSON 数据:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
# u'[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

如果 JSON 解码失败, r.json
就会抛出一个异常。例如,相应内容是 401 (Unauthorized),尝试访问 r.json
将会抛出 ValueError: No JSON object could be decoded
异常。

原始响应内容

在罕见的情况下,你可能想获取来自服务器的原始套接字响应,那么你可以访问 r.raw
。 如果你确实想这么干,那请你确保在初始请求中设置了 stream=True
。具体你可以这么做:

>>> r = requests.get('https://github.com/timeline.json', stream=True)
>>> r.raw<requests.packages.urllib3.response.HTTPResponse object at 0x101194810>
>>> r.raw.read(10)'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'

但一般情况下,你应该以下面的模式将文本流保存到文件:
with open(filename, 'wb') as fd: for chunk in r.iter_content(chunk_size): fd.write(chunk)

使用 Response.iter_content
将会处理大量你直接使用 Response.raw
不得不处理的。 当流下载时,上面是优先推荐的获取内容方式。



作者:AC手环
链接:https://www.jianshu.com/p/0e0336b370f3
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

ESP32S3与ILI9341 LCD屏LVGL移植实战:从零构建嵌入式GUI界面 本文详细介绍了如何在ESP32S3平台上移植LVGL图形库并驱动ILI9341 LCD屏幕,从硬件选型、开发环境配置到显示驱动实现和内存优化。通过实战案例讲解移植过程中的关键步骤和常见问题解决方案,帮助开发者快速构建嵌入式GUI界面。 阅读详情

相关推荐

Multisim的探针(Probe)及数字电路的一些调试技巧的应用

Multisim的探针(Probe)及数字电路的一些调试技巧的应用 --EE Bang   By  WRS 上图为555方波发生器,根据R1,R2,C2参数的配置可产生频率为46.3KHZ,占空比50%的方波信号,如果用示波器查看波形参数的话需要用两个坐标轴做差,操作不便,另外如果要修改电路将上述电阻换成滑动变阻器的话,使其产生可变频率

Agent Christmas的博客 3万+

爬虫基础--requests,.content的基本使用

首先导入模块 import requests 其次设置请求头(以知乎某用户为例) request_headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding':'gzip, deflate, sdch, br', 'Accept-Language':'zh-CN,zh;q=0.8', 'Cache-Con

weixin_47249161的博客 7192

MATPOWER下载安装教程

将MATPOWER文件复制在C:\Program Files (x86)\MATLAB\R2016b\bin目录下。原来的窗口中多了很多文件路径,点击【保存】,再点击【关闭】选择所要添加的MATPOWER文件夹,点击【选择文件夹】二、将MATPOWER放在bin目录下。找到菜单栏的【设置路径】点击【添加并包含子文件】一、从官网下载后解压。

weixin_47365903的博客 2万+

request的响应内容使用text和content的区别

总之,如果你需要处理文本数据,使用 `text` 属性更为方便,因为它自动处理字符编码和文本解析。如果你需要获取二进制数据(例如下载图片或文件),则使用 `content` 属性。- 如果响应的内容是文本数据(如 HTML 页面或 JSON 数据),使用 `text` 属性可以直接获取文本内容,- 使用 `text` 属性时,你可以方便地处理文本数据,进行文本操作,搜索文本内容,或者解析 JSON。- 无论响应内容是什么,`content` 属性都会返回原始的二进制数据,而不会自动进行解码。

m0_52287942的博客 1899

在Kintex-7 FPGA上实现皮秒级时间测量:手把手教你搭建CARRY4进位链TDC(附源码与约束)

本文详细介绍了在Kintex-7 FPGA上利用CARRY4进位链实现皮秒级时间测量(TDC)的完整方案。从CARRY4的物理特性分析到硬件架构设计,再到校准方法与精度提升技巧,手把手教你构建测量精度达53ps的TDC系统,并附源码与约束文件,助力激光雷达、高能物理等精密计时应用开发。

weixin_42550052的博客 444

OpenClaw小白使用全攻略

OpenClaw全能技能解锁指南:从基础到进阶 摘要: 本文提供OpenClaw AI智能体的完整使用教程,帮助用户从安装后"不知道如何用"到熟练掌握核心功能。教程包含:1)控制台5大区域详解和3个必做初始化设置;2)文件管理、浏览器自动化、文档生成等5大基础功能实操,每个功能配有详细操作步骤、指令模板和效果演示;3)10+高频场景解决方案,如整理文件、搜集资料、写总结等;4)进阶技巧和常见问题解答。通过清晰的图文指引,即使电脑小白也能快速上手,实现办公自动化、提升工作效率。

通俗易懂学IT 3059

Python中requests模块里content与text的区别

** 一、response.text ** 使用response.text时,Requests会基于HTTP响应的文本编码自动解码响应内容, 大多数Unicode字符集都能被无缝的解码 ** 二、response.content ** 使用response.content时,返回的是服务器响应数据的原始二进制字节流,可以用 来保存图片等二进制文件。 拓展: 1、查看完整的url地址 prin...

qq_44240254的博客 1009

基于Gossip算法的柔性互联自治微网群分布式协调控制策略:复现代码与详细解释

摘要(149字): 本文基于Gossip算法实现了柔性互联微网群(MMG)的分布式协调控制策略仿真。研究构建了包含3个微网、10个分布式电源(DG)的MATLAB/Simulink模型,采用双层控制架构:上层通过柔性交流开关(FAS)实现微网间功率协调,下层利用Gossip算法完成DG间的边际成本一致性控制。重点开发了异步通信的Gossip算法核心函数,实现了分布式电源的自主边际成本估计与功率分配。仿真验证了系统在负荷变化和DG故障等工况下的协调控制能力,结果表明该策略能有效维持微网群的经济运行与功率平衡。

huanghm88的专栏 281

python requests的content和text方法的区别

python requests的content和text方法的区别如下: 区别一: 1、requests对象的get和post方法: requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在。 区别二: content和text用法: content和text两个对象中,两者区别在于,content中间存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将co

HAL6668的博客 1568

Python爬虫实战:利用最新技术爬取B站视频信息

本文详细介绍了如何使用Python最新技术构建一个功能完善的B站视频信息爬虫。我们从基础爬取开始,逐步深入到反反爬策略、异步处理、数据存储和分析等高级主题。更智能的反反爬策略:使用机器学习识别验证码更高效的分布式架构:结合Kubernetes实现弹性伸缩实时数据管道:将爬取的数据实时推送到数据分析平台多平台支持:扩展支持抖音、YouTube等其他视频平台。

2201_76125261的博客 1040

YOLO算法:关于目标检测算法的基本介绍(小白入门必读)

目标检测算法是一种计算机视觉算法,用于在图像或视频中识别和定位特定的目标物体。本节课就给大家重点介绍下基于深度学习的目标检测算法!

小哥谈 2524

response.text 和 response.content 的区别

#!/usr/bin/evn python # -*- coding:utf-8 -*- import requests response = requests.get('https://www.baidu.com') print(response) print(response.text) #打印的是乱码(解码方式和编码方式不一致) print(response.encoding) #查看响应内容的编码方式 response.encoding = 'utf-8' #指定解码方式 print(r...

huiyifan_python的博客 1210

具身智能:原理、算法与系统 第3章 具身智能的感知-认知-行为框架

具身智能的PCB框架源于对生物智能系统的观察:动物通过感官接收环境信息(感知),基于内部模型进行预测和决策(认知),并通过身体执行动作改变环境(行为),而这一改变又通过感知反馈形成闭环。这一框架在两篇核心文献中得到了深入阐述:提出了系统的数学形式化和工程实现,则从认知科学角度强调了归纳偏置和双过程理论的重要性。

VectorShift的博客 155

python-request库

​ python中的Web 请求库包括requests 、urllib、http.client。,被称为“让 HTTP 请求变得优雅的库”。相比标准库urllib和,它极大简化了发起请求、处理响应的复杂度,语法直观,功能强大。Requests是基于urllib,使用****库。其在python内置模块的基础上进行了高度封装,使得Requests能够轻松完成浏览器相关的任何操作。Requests能够模拟浏览器的请求,比起上一代的urllib库,Requests实现爬虫更加便捷迅速。

ly的博客 888

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python requests乱码全解析:从编码原理到五种实战解决方案

字符编码是计算机处理文本信息的基础,它定义了字符与二进制数据之间的映射规则。其核心原理在于编码(将字符转换为字节)与解码(将字节还原为字符)过程的匹配。在Web开发与数据抓取领域,正确处理字符编码对于确保数据完整性和可读性至关重要,直接影响到API调用、网页爬虫等应用的数据质量。当编码声明缺失、错误或与实际传输内容不匹配时,就会出现乱码问题,例如中文字符显示为‘锟斤拷’等异常符号。本文聚焦于Python生态中广泛使用的`requests`库,深入剖析其响应内容解码机制,并系统性地提供从应急处理到根治方案的实

weixin_30723433的博客 334

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python Requests库零基础实战教程(API调用\+网页爬取生产落地)

本文基于多年开发、爬虫、接口自动化实战经验,从安装、基础语法、核心请求、参数详解、实战场景、生产优化、避坑排错全方位讲解,所有代码实测可直接运行,适合零基础自学、项目开发、面试备考。日常开发中,90%的网络场景都能靠Requests搞定:第三方API接口调用、后端服务联调、静态网页数据抓取、文件批量下载、表单提交、接口压力测试简易脚本。HTTP标准请求方式:GET、POST、PUT、DELETE、HEAD,日常开发高频使用GET、POST两种。普通单次请求无法携带Cookie,登录后无法保持状态。

2501_92999288的博客 294

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

requests.text和requests.content的区别

我们在利用requests库进行网络数据爬取时,通常遇到编码问题,在通过requests的get方法获取响应后,通常有response.text和response.content两种输出格式: 1. response.content: 这个是直接从网络上面抓取的数据,没有经过任何解码,所以说是一个bytes类型。其实在硬盘上和网络上传输的字符串都是bytes类型。 因此在利用response.content进行输出时: 我们可以利用 resonse.content.decode进行解码为unico.

、Lu的博客 1万+

python中requests里.text和.content方法的区别

requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在.content和.text两个对象中。 两者区别在于,content中间存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串。 直接输出content,会发现前面存在b'...

王小波的博客 7万+

Python爬虫Requests模块中text和content的解码

今天要说一下Requests模块中爬取到网页内容解码方式 response.text和 response.content两者的区别 requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在.content和.text两个对象中 两者区别在于,content中间存的是字节流数据,而te...

m0_46397094的博客 1万+

requests库中response.text 和response.content的区别

1.response.text - 类型:str - 解码类型: 根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码 - 如何修改编码方式:response.encoding=”gbk” 2. response.content - 类型:bytes - 解码类型: 没有指定 - 如何修改编码方式:response.content.deocde(“utf-8”) 3. 区别 使用re...

Python美丽星球--微信(Felixzfb) 2961

requests库的 text / content / json的区别

最近在爬一些数据,刚开始用urllib.request 库,一直连不到数据 ; 后来通过CHROME浏览器的F12,发现该 网站用的是JSON格式{}'Content-Type': 'application/json',},不同于以往的提交方式“Content-Type: text/html; charset=utf-8" 试了各种方法 ,一直不能取得数据。 看的许多介绍方法中有用“requ...

小白_努力 4458

python3 requests content和text 区别

一直在想requests的content和text属性的区别,从print 结果来看是没有任何区别的 response = requests.get(url) response.content response.text 两个函数定义如下: @property def text(self): """Content of the response, in unicode. If Response.encoding is None, encoding w

whatday的专栏 1348

【python】python requests返回对象的content和text方法的区别

区别一: 1、requests对象的get和post方法: requests对象的get和post方法都会返回一个duResponse对象,zhi这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在。 import requests url="http://www.baidu.com" try: Response=requests.get(url) Response.raise_for_status() #请求失败会抛出异常 except reque

欢迎关注【微信公众号】测试开发Guide,从功能测试进阶测试开发 3277

Python中requests函数的content和text方法的区别

这里写自定义目录标题 requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在.content和.text两个对象中。 两者区别在于,content中间存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串。 直接输出content,会发现前面存在b’这样的标志,这是字节字符串的标志,而text是,没有前面的b,对于纯ascii码,这两个可以说一

是故事啊~关注我~ 4152
上一篇: return 和yield的区别
下一篇: 拉勾爬虫实战(通过输入关键字爬取任意职位并自动保存为.csv文本)
djs123DJS
博客等级 码龄9年 49粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值