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

Python使用BeautifulSoup爬取页面出现NoneType无text属性报错如何修复

网页爬虫AttributeError报错修复方案

错误根因

你遇到的AttributeError: 'NoneType' object has no attribute 'text'报错,核心原因是 soup.find('span', {'id': 'statsPoolMc'})没有匹配到对应页面元素,返回了空值None,直接对空值调用.text属性就会触发该异常。

匹配不到元素的具体原因是目标站点的内容是JavaScript动态渲染生成的,直接调用session.get()拿到的是未执行JS的初始静态HTML源码,不存在你要查找的id为statsPoolMc的span元素。

修复代码

你使用的requests_html库本身自带JS渲染能力,只需要在获取响应后调用render()方法执行页面JS,等待动态元素加载完成后再解析即可,修改后可运行代码如下:

from bs4 import BeautifulSoup
from requests_html import HTMLSession

session = HTMLSession()
response = session.get('https://pool.rplant.xyz/#')
# 执行页面JS渲染,等待动态元素加载完成
response.html.render()

# 两种解析方式二选一即可
# 方式1:直接使用requests_html自带的选择器,无需额外引入BeautifulSoup
nah = response.html.find('#statsPoolMc', first=True).text
print(nah)

# 方式2:沿用你原来的BeautifulSoup解析逻辑,传入渲染后的完整HTML源码
# soup = BeautifulSoup(response.html.html, 'html.parser')
# nah = soup.find('span', {'id': 'statsPoolMc'}).text
# print(nah)

session.close()

注意事项

  • 第一次调用render()方法时,工具会自动下载用于JS渲染的Chromium内核,需保持网络通畅等待下载完成后再执行后续逻辑。
  • 如果渲染后仍找不到对应元素,可以先打印渲染后的完整HTML源码print(response.html.html),确认目标元素的id是否符合预期,排查是否有反爬策略拦截了你的请求。
  • 代码执行完毕后要主动关闭session,避免不必要的资源占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:04