编写XPath时如何排除单个或多个指定标签内的文本内容
可用的XPath解决方案
方案1(适配当前场景,最简单)
直接提取p标签的直接文本节点,不会包含子元素a内的文本://p[@class='fs-14 mb-2']/text()
方案2(兼容更复杂的嵌套场景)
如果p标签内后续可能有其他嵌套标签,需要排除所有a标签内的文本、保留其余所有文本拼接结果,可以用://p[@class='fs-14 mb-2']//text()[not(parent::a)]
原有写法失效原因
你之前编写的//p[@class='fs-14 mb-2']/*[not(self::a)]的匹配逻辑是「选择p标签下所有不是a标签的子元素节点」,而你需要的1 Schools Found.是p标签的直接文本节点,不属于元素节点范畴,因此该表达式完全匹配不到目标内容,无法生效。
内容的提问来源于stack exchange,提问作者enthusiasticCoder
相关产品推荐
相关产品推荐

