selenium 使用Xpath排除带有链接的标记

pgky5nke  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(178)

我想排除所有使用xpath链接的标记

<p/>...</p>
<p/>...</p>
....
<p/>
<strong/>
<a href="https://exapmle.com" rel="nofollow">Link</a>
 </strong>
</p>

我需要解析所有标记,但不包括包含href的最后一个标记
找到一些here尝试p[not(contains(@href,'example'))],但不起作用

6yjfywim

6yjfywim1#

这个XPath将为您提供所有p节点,这些节点不包含包含href属性的a子节点:

"//p[not(.//a[@href])]"

另外,由于您使用的是Selenium,XPath2.0在这里不相关,因为Selenium只支持Xpath1.0

uxhixvfz

uxhixvfz2#

也许这一个?

//p[descendant::a[not(contains(@href,'example'))]]

您将获取所有p元素,这些元素的a查尔兹元素不包含值为examplehref属性
此外,这一个可以有效的你想要什么:

//p[.//a[not(contains(@href,'example'))]]
qcbq4gxm

qcbq4gxm3#

我想你想要这个

//a[@href]/ancestor::p[1]

在此XML文档上计算上述XPath表达式时

<html>
    <p>1</p>
    <p>2
        <p>23
            <a href="xxx">XXX</a>
        </p>
    </p>
    <p>3
        <p>34
            <a href="yyy">YYY</a>
        </p>
    </p>
    <p>4
        <p>45

        </p>
    </p>
</html>

恰好选择所需的(要排除的)<p>元素

<p>23
          <a href="xxx">XXX</a>
</p>
<p>34
          <a href="yyy">YYY</a>
</p>

如果您需要除上述之外的所有元素,请用途:

//*[count(. | //a[@href]/ancestor::p[1]) 
   > 
    count(//a[@href]/ancestor::p[1])
   ]

相关问题