排除包含属性的元素及其所有子元素

Posted

技术标签:

【中文标题】排除包含属性的元素及其所有子元素【英文标题】:Exclude element containing attribute and all its children 【发布时间】:2021-11-24 17:37:57 【问题描述】:

我目前正在尝试检索网页上的所有元素,不包括链接及其子元素。

页面组成如下:

<body>
    <p>
        ...
        <a href='...'>
            <strong> ... </strong>
        </a>
        ...
    </p>
    <p>
        ...
        <a href='...'>
            <strong> ... </strong>
        </a>
        ...
    </p>
</body>

我能够使用//body//*[not(@href)] 获取除链接之外的所有元素。

不过,我也捕获了包含 href 属性的元素的子元素。

如何过滤掉包含href 属性及其子属性的元素?

【问题讨论】:

【参考方案1】:

要实现这一点,您可以指定所有节点既不具有href 属性,也不具有href 属性的祖先。

//body//*[not(@href or ancestor::*/@href)]

【讨论】:

以上是关于排除包含属性的元素及其所有子元素的主要内容,如果未能解决你的问题,请参考以下文章

Jquery如何选取元素及其所有子元素?

如何在 C# 中设置元素及其所有子元素的文本颜色和样式

Python Selenium - 根据样式属性单击css元素或包含子元素的文本?推特关注

XPath 获取除具有特定名称的子元素之外的所有子元素?

jQuery:如何选择具有包含 x 属性的子元素或元素?

children([expr]) 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。