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

Python中BeautifulSoup4使用find()提取HTML文本触发AttributeError求助

错误原因

你得到的AttributeError: 'NoneType' object has no attribute 'find'报错,是因为链式调用时第一个 soup.find("div", {"data-itrac-control-cd":"CS_ID"})返回了空值None,后续对None调用find方法触发报错,和你替换.text()还是.get_text()无关,代码根本没有执行到提取文本的步骤。

修复方案

1. 分步调试写法(推荐,方便定位问题)

# 先单独提取目标div,不要链式调用
target_div = soup.find("div", {"data-itrac-control-cd": "CS_ID"})
# 先判断div是否存在,避免空值报错
if target_div:
    target_span = target_div.find("span")
    if target_span:
        # 注意:text是属性不需要加括号,加strip()去除文本前后的换行、空格
        result = target_span.text.strip()
        print(result) # 输出结果:INC000001

2. CSS选择器简化写法

如果确认HTML结构固定,可以直接用CSS选择器一步提取:

result = soup.select_one('div[data-itrac-control-cd="CS_ID"] span').text.strip()
常见踩坑提醒
  • 先确认你传入BeautifulSoup的HTML内容已经包含目标div,若目标内容是JavaScript动态渲染生成的,直接用requests请求静态源码拿不到对应节点,需要先用Selenium、Playwright等工具渲染页面后再提取
  • BeautifulSoup中text是标签对象的属性,不需要加括号调用,get_text()是可调用方法,二者都可以提取文本,注意不要混淆写法
  • 链式调用节点查找方法前,最好先判断上一步返回的节点是否为None,避免属性报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:42:00