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

如何用XPath获取<p class='p1'>下除首个<span>外的全部文本?

解决方案

你可以通过以下几种方式实现需求,既保留所有子元素(包括<a>标签)的文本,又移除开头的<span>SIGNIFICADO: </span>内容:

方法一:字符串截取替换(最简单)

先获取整个<p class="p1">的完整文本(element.text会自动拼接所有子元素的文本),再移除开头的目标字符串:

p1_element = driver.find_element(By.XPATH, '//p[@class="p1"]')
full_text = p1_element.text
# 只替换开头的一次"SIGNIFICADO: ",避免影响文本中间的相同内容
target_text = full_text.replace("SIGNIFICADO: ", "", 1)

方法二:XPath精准筛选文本节点

用XPath选中所有不属于第一个<span>的文本节点,再拼接成完整文本:

# 选中p标签下所有非第一个span后代的文本节点
text_nodes = driver.find_elements(By.XPATH, '//p[@class="p1"]//text()[not(ancestor::span[1])]')
# 过滤空文本并拼接
target_text = ''.join([txt.strip() for txt in text_nodes if txt.strip()])

方法三:DOM操作移除目标span

通过JavaScript直接在页面DOM中移除第一个<span>元素,再获取剩余文本:

p1_element = driver.find_element(By.XPATH, '//p[@class="p1"]')
# 执行JS移除第一个子元素(即目标span)
driver.execute_script("arguments[0].removeChild(arguments[0].firstElementChild);", p1_element)
target_text = p1_element.text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:05:20