当前位置: 首页 > news >正文

python中的response.content,response.json,response.text三者的区别与联系

一、三者的本质区别(核心)

假设我们有一个请求:
import requests
res = requests.get("https://httpbin.org/json")
 
 
属性 / 方法 类型 本质 适用场景
res.content bytes(二进制字节) 服务器返回的原始响应体,完全没经过处理 下载图片 / 文件、处理加密数据、未知编码文本
res.text str(字符串) res.content 经过requests 自动推测编码解码后的字符串 爬取网页源码、查看文本内容
res.json() dict / list res.contentjson.loads() 解析后的 Python 对象 处理接口返回的 JSON 数据

二、三者的联系与转换关系

它们都是来自同一个源头:服务器返回的原始字节流。
服务器原始响应(bytes) → res.content↓(requests自动解码)res.text (str)↓(json.loads解析)res.json() (dict/list)
 

等价写法说明(这是重点这重!)

  • res.text 等价于:
    # requests自动推测编码后的解码
    res.content.decode(res.encoding)
  • res.json() 等价于:
    import json
    json.loads(res.content)
    # 或 json.loads(res.text) (前提是text的编码正确)

三、常见坑点与避坑指南

1. res.text 乱码问题

  • 原因:requests 会自动根据响应头的 Content-Type 或字节流猜测编码,猜错了就会乱码。
  • 解决方法:手动指定编码解码:
     
    # 方法1:修改res的编码
    res.encoding = "utf-8"  # 或 "gbk"
    print(res.text)# 方法2:直接从content解码(更可控)
    print(res.content.decode("utf-8"))
     

2. res.json() 报错问题

  • 原因:响应不是标准 JSON 格式(比如返回 HTML 错误页、纯文本)。
  • 报错json.decoder.JSONDecodeError
  • 解决方法:加异常捕获,同时看一下原始响应:
     
    try:data = res.json()
    except Exception as e:print("解析JSON失败,原始响应:", res.text)raise e
     

四、实战对比代码

import requestsurl = "https://httpbin.org/json"
res = requests.get(url)print("=== res.content ===")
print(type(res.content))  # <class 'bytes'>
print(res.content[:100])  # 打印前100字节print("\n=== res.text ===")
print(type(res.text))     # <class 'str'>
print(res.text[:100])     # 打印前100字符print("\n=== res.json() ===")
print(type(res.json()))    # <class 'dict'>
print(res.json()["slideshow"]["title"])  # 直接取字典里的值
 

五、一句话总结怎么选

  • 要下载文件 / 图片 / 二进制数据 → 用 res.content
  • 要爬网页源码 / 纯文本 → 用 res.text(乱码就手动指定编码)
  • 要处理接口 JSON 数据 → 直接用 res.json()
http://www.jsqmd.com/news/823631/

相关文章:

  • 2026年5月深圳冷水机/螺杆冷水机/空气处理机/恒温恒湿净化空调/高精密空调厂家哪家好,认准深圳市兴露制冷设备有限公司 - 2026年企业推荐榜
  • AGV中上位机
  • 回流平台深耕闲置翡翠流通,以数字化服务激活珠宝产业新动能
  • 非结构化数据中台建设方案:融合AI与知识图谱技术,实现数据资产化与知识化
  • 教育机构搭建AI辅助教学系统时如何通过Taotoken统一接口
  • OpenAI为代码生成应用Codex推移动端远程访问功能,开发者可手机管理任务
  • 构建安全通讯系统:从加密原理到工程实践的全方位指南
  • FPGA开发避坑指南:从雷达供电控制案例看组合逻辑中的‘无关项’处理技巧
  • 2026成都广州四川北京云南数字展厅项目观察 - 十大品牌榜
  • OpenClaw 命令行 / 本地 / 云端部署 微信自动化落地
  • 如何用stltostp打破3D数据孤岛:从STL到STEP的无缝转换实战
  • 百度成立模型委员会,统筹大模型全流程工作,深化AI战略布局
  • 别再乱用二值信号量了!FreeRTOS互斥量与递归互斥量实战避坑指南
  • Netflix 4K画质与杜比音效优化指南:解锁你的流媒体最佳体验
  • Multisim仿真实战:石英晶体振荡器电路设计与性能调优
  • 非现场执法治超系统10大排行发布 广州聚杰技术过硬稳居行业第一梯队 - 品牌速递
  • 华为交换机MSTP实战:用4台设备模拟企业多部门网络,手把手教你配置负载均衡与防环路
  • 如何快速掌握冒险岛资源提取:免费WZ解析工具完全指南
  • 打磨与展望:RAG 的进阶技巧与避坑指南
  • 无需依赖进口设备 广州聚杰不停车超限超载检测系统达到国际水准 - 品牌速递
  • 如何用NcmppGui快速解锁NCM音乐文件:3分钟完成格式转换的完整指南
  • 3分钟掌握TestDisk:开源数据恢复终极解决方案
  • 3分钟搞定隐私保护:Boss-Key老板键零基础配置指南
  • Eviews面板数据建模保姆级教程:从Hausman检验到模型选择,一次讲透固定效应与随机效应
  • Anthropic调整Claude付费订阅层级,引入Agent SDK额度体系平衡成本与需求
  • Temu 手把手教学陪跑哪家靠谱?3 家保姆式陪跑机构推荐 - 麦克杰
  • 坚守自主智造之路 广州聚杰非现场执法治超系统实力比肩海外 - 品牌速递
  • 懒人必备!OpenClaw 汉化版一键配置上手教程
  • Timer 时序大模型云服务来了!TimechoAI 开放邀请体验
  • 批量照片水印处理终极指南:3分钟自动添加相机参数和品牌Logo