如何使用xpath包含内容抓取数据?

时间:2020-06-24 04:56:13

标签: xpath

我如何排除包含包含要刮除的元素,或者我使用的当前xpath无法正常工作。 // div / li [contains(text(),'Night')或contains(text(),'Big')

3 个答案:

答案 0 :(得分:1)

要完成@Sergii Dmytrenko的回答,请同时使用小写的or运算符。

//div/li[contains(text(), 'Night') or contains(text(), 'Big')]

前面的XPath将输出li个包含文本“ Night”或“ Big”(区分大小写)的元素。

为了排除元素,您可以使用not运算符,如前所述。

旁注:将!=(不等于)与and运算符一起使用也可以排除元素:

//div/li[text()!='Night' and text()!='Big']

这将排除严格包含(无更多文字)“夜”或“大”的元素。


编辑:假设您拥有:

<div>
  <h2>Night of the living dead</h2>
  <h2>Big fish</h2>
  <h2>Save the last dance</h2>
  <h2>Tomorrow never die</h2>
  <h2>Australia nuclear war</h2>
</div>

要选择不包含“夜”,“大”或“澳大利亚”的元素,您有两个选择:

or条件内使用not运算符:

//div/h2[not(contains(text(),'Night') or contains(text(),'Big') or contains(text(),'Australia'))]

与and运算符一起使用多个not

//div/h2[not(contains(text(),'Night')) and not(contains(text(),'Big')) and not(contains(text(),'Australia'))]

输出:2个节点:

Save the last dance
Tomorrow never die

答案 1 :(得分:1)

您的XPath表达式(如果输入错误得到纠正,li[contains(text(), 'Night') or contains(text(), 'Big')])将返回li个元素,其文本为“ Night”或“ Big”。

要排除这些错误,正确的表达应为

//div/li[not(contains(text(), 'Night') or contains(text(), 'Big'))]

或者您可以尝试

//div/li[not(contains(text(), 'Night')) and not(contains(text(), 'Big'))]

答案 2 :(得分:0)

  1. 您的xpath应该以']'结尾,当前无效。

  2. 如果您想排除“夜”和“大”,则可以尝试以下方法:

    // div / li [not(contains(text(),'Night')或contains(text(),'Big'))]