求助:如何用XPath获取指定标签后方的目标文本内容?
解决XPath定位Variant标签后抓取对应p文本的问题
你的问题出在对HTML结构的层级判断上——span[text()='Variant:']和目标p标签并不是直接的兄弟节点,它们分别嵌套在两个同级的div容器里。我们需要调整XPath的遍历路径,先回到父容器,再定位到兄弟容器里的内容。
正确的XPath表达式方案
这里提供几种可靠的写法,你可以根据实际场景选择:
方案1:从span向上回溯到父容器,再找兄弟容器的p
//span[text()='Variant:']/../following-sibling::div[@class='info-content']/p
- 解释:
//span[text()='Variant:']:精准定位到文本为Variant:的span标签../:向上跳一级,回到span所在的div.info-label容器following-sibling::div[@class='info-content']:找到这个div的同级兄弟容器div.info-content/p:定位到该容器内的p标签
如果想直接获取文本内容,可以在末尾加上/text():
//span[text()='Variant:']/../following-sibling::div[@class='info-content']/p/text()
方案2:先定位包含目标span的info-row,再找内部的p
这种写法更强调上下文关联性,结构更清晰:
//div[@class='info-row'][.//span[text()='Variant:']]/div[@class='info-content']/p/text()
- 解释:先找到包含
Variant:span的div.info-row,再直接提取该row内info-content里的p文本。
为什么你的原表达式失败?
原表达式//span[text()='Variant:']/following-sibling::p是在找span的直接同级兄弟节点,但根据你的HTML结构,span的父容器是div.info-label,span没有直接的p兄弟——p在隔壁的div.info-content里,所以自然无法定位到。
内容的提问来源于stack exchange,提问作者Rich Stevens
相关产品推荐
相关产品推荐

