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

如何通过Selenium从指定HTML中提取文本变量'14'?

解决提取页面文本'14'的问题

之前两种方法的错误原因

  • 第一种XPath错误:find_element方法只能定位元素节点,而//div[@class='hale_sup']/text()[1]直接返回的是文本节点,不符合方法要求,因此报错。
  • 第二种方法错误:.text是元素的属性(不是方法),不能加();且<div class="hale_sup"></div>本身是空标签,没有任何文本内容,即使去掉()也无法获取目标值。

正确提取'14'的方法

目标文本'14'是紧跟在<div class="hale_2">后的独立文本节点,可通过以下两种方式获取:

方法1:通过JS执行XPath获取文本节点

Selenium原生的find_element无法直接获取文本节点,可借助execute_script执行XPath表达式提取:

# 执行JS获取目标文本节点的内容
total_pages = driver.execute_script("""
return document.evaluate(
    '//div[@class="hale_2"]/following-sibling::text()[2]',
    document,
    null,
    XPathResult.STRING_TYPE,
    null
).stringValue;
""")
# 去除多余空格后得到结果
total_pages = total_pages.strip()
print(total_pages)  # 输出:14

这里following-sibling::text()[2]表示选取hale_2节点后的第2个文本节点(第一个是'of',第二个是'14')。

方法2:通过父元素文本分割提取

如果这些元素和文本都属于同一个父容器,可先获取父容器的全部文本,再通过字符串处理提取目标值:

# 定位包含所有目标内容的父元素(需根据实际页面调整定位方式)
parent_container = driver.find_element(By.TAG_NAME, "body")
# 获取父元素的全部文本
full_text = parent_container.text
# 分割文本并提取最后部分
total_pages = full_text.split("of")[-1].strip()
print(total_pages)  # 输出:14

内容的提问来源于stack exchange,提问作者Javier Soler Medina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:45:41