使用XPath提取网页元素时如何排除带href属性元素及其所有子元素
你可以通过新增祖先节点校验的XPath表达式实现需求,正确写法如下:
//body//*[not(@href) and not(ancestor::*[@href])]
两个过滤条件的作用分别为:
not(@href):保留原有逻辑,排除自身带有href属性的元素not(ancestor::*[@href]):新增校验逻辑,排除所有父级、祖父级等上层节点中存在带href属性的元素,即可实现过滤链接所有子元素的效果
如果你的场景中仅需要排除<a>标签类型的链接,不需要过滤其他带href属性的元素,可以使用更精准的表达式:
//body//*[not(self::a) and not(ancestor::a)]
内容的提问来源于stack exchange,提问作者Arkaik
相关产品推荐
相关产品推荐

