You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在response.content中检查字符串触发TypeError错误的原因及解决方法求助

解决 TypeError: a bytes-like object is required, not 'str' 问题

嘿,这个错误我日常帮人排查的时候碰到好多次了,核心原因其实很简单——你在字节对象(bytes)和字符串(str)之间做了不兼容的操作。

为什么会触发这个错误?

当你发送HTTP请求后,有些方式获取到的响应内容是字节类型(比如用requests.get().content、urllib.request.urlopen().read()),但你却用普通字符串(比如"要检查的语句")去判断是否包含,这两种类型就像不同语言的人对话,根本没法直接对比,所以Python就抛出了这个类型错误。

两种快速解决办法

方法1:把字节对象转成字符串

用decode()方法把字节内容解码成字符串,记得指定正确的编码(通常是utf-8,如果不确定可以用响应返回的编码):

import requests
response = requests.get("你的请求URL")
# 解码成字符串
response_str = response.content.decode("utf-8")
# 现在就可以正常判断包含关系了
if "你要检查的语句" in response_str:
    print("找到了目标内容!")

如果你用的是requests库,更省事的是直接用response.text——它已经自动帮你把字节内容转成字符串了:

if "你要检查的语句" in response.text:
    print("找到了目标内容!")

方法2:把字符串转成字节对象

反过来,给你要检查的字符串前面加个b,把它变成字节类型,这样就能和响应的字节内容直接对比了:

import requests
response = requests.get("你的请求URL")
# 用字节字符串去判断
if b"你要检查的语句" in response.content:
    print("找到了目标内容!")

小提醒

如果用decode()的时候出现乱码,别慌,可以先看看响应的编码是什么(比如print(response.encoding)),然后用对应的编码去解码,比如response.content.decode(response.encoding)。

内容的提问来源于stack exchange,提问作者Piers Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:13:52