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

使用bs4(BeautifulSoup)获取span标签文本时报NoneType无text属性错误如何解决

报错原因

你遇到的AttributeError: 'NoneType' object has no attribute 'text'报错,本质是item.find('span')没有匹配到任何span标签,返回了None空值,对空值调用text属性就会触发该错误。

排查与解决步骤
  • 先修复代码中的语法错误:你现有代码里headers的User-Agent值存在手动换行,会直接触发语法错误,需要把User-Agent的内容拼接为一整行:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
  • 增加空值判断逻辑,调用属性前先确认标签存在:
for item in table:
    # 过滤非标签类型的节点(比如空白文本节点)
    if not hasattr(item, 'find'):
        continue
    span_tag = item.find('span')
    # 确认找到span标签再读取text
    if span_tag:
        price = span_tag.text
        print(price)
  • 确认父级容器定位正确:目标网站的前端结构会不定期更新,你可以先打印父容器的完整内容,确认你需要的span确实在该容器内:
print(table.prettify())

如果定位的div.first.inlineblock容器已经不存在,需要用浏览器F12开发者工具重新检查元素,拿到正确的定位属性。

  • 可选优化:可以直接在父容器内批量查找所有span,不需要遍历子节点,简化代码:
# 直接提取容器下所有span的文本
for span in table.find_all('span'):
    print(span.text)
  • 解析器优化:如果默认的html.parser解析页面有结构错乱的问题,可以安装容错性更高的lxml解析器:
    先执行安装命令:pip install lxml
    再修改soup初始化代码:
soup = BeautifulSoup(page.text, 'lxml')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:09:04