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

如何在Python Selenium中提取标签外的独立文本?

解决提取div内label外文本的问题

方法1:通过XPath直接定位目标文本节点

修改XPath,直接选择div下的非空白文本节点,跳过label元素的内容:

# 注意:Selenium中使用text()定位文本节点时,find_element会返回字符串
amount = driver.find_element_by_xpath("//body[1]/div[4]/div[1]/div[2]/div[2]/div[3]/div[1]/div[1]/div[1]/font[1]/div[1]/table[2]/tbody[1]/tr[1]/td[1]/div[10]/text()[normalize-space()]")
print(amount.strip())

text()[normalize-space()]会筛选出div下非空白的独立文本节点,也就是你要的$0.00。

方法2:提取完整文本后过滤label内容

先分别获取label和div的文本,再通过字符串替换去掉label内容:

# 获取label的文本内容
label_content = driver.find_element_by_xpath("//body[1]/div[4]/div[1]/div[2]/div[2]/div[3]/div[1]/div[1]/div[1]/font[1]/div[1]/table[2]/tbody[1]/tr[1]/td[1]/div[10]/label").text
# 获取div的完整文本
full_div_text = driver.find_element_by_xpath("//body[1]/div[4]/div[1]/div[2]/div[2]/div[3]/div[1]/div[1]/div[1]/font[1]/div[1]/table[2]/tbody[1]/tr[1]/td[1]/div[10]").text
# 过滤得到目标金额
target_amount = full_div_text.replace(label_content, "").strip()
print(target_amount)

方法3:修正following-sibling的写法

你之前用following-sibling失败,是因为没定位到文本节点。正确写法是定位label后,选择其后面的文本节点:

amount = driver.find_element_by_xpath("//body[1]/div[4]/div[1]/div[2]/div[2]/div[3]/div[1]/div[1]/div[1]/font[1]/div[1]/table[2]/tbody[1]/tr[1]/td[1]/div[10]/label/following-sibling::text()[normalize-space()]")
print(amount.strip())

版本兼容提示

如果使用Selenium 4.x,find_element_by_xpath已被弃用,建议改用:

from selenium.webdriver.common.by import By

amount = driver.find_element(By.XPATH, "你的XPath表达式")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:15:35