在 XPath 中使用 Or 运算符选择 A 或 B

Hel*_*mer 5 xpath

我正在尝试抓取一些网站,并且我想要的数据可以在以下任一位置找到,具体取决于网站:

第 1 页:

<div>
   <ul>
     <li class="asd"> SomeText1 </li>
   </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

第2页:

<div>
   <ul>
     <li class="dsa"> SomeText2 </li>
   </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我想要一个 XPath 表达式,它首先尝试选择 SomeText1,如果它不存在,则尝试获取 SomeText2。

我已经尝试过了//li[@class="asd"]/text() or //li[@class="dsa"]/text(),但这似乎并没有解决问题。

我是否使用了or错误的操作符?如果可以的话,应该如何使用呢?

编辑

我正在尝试向爬虫提供 XPath,以便查找要存储在数据库中的信息。在给定的网页上,我想要获取的信息可以在两个不同的地方吗?

这意味着网页 1 可能是:

<AA>
  <BB>
    <CC> Test </CC>
  </BB>
</AA>
Run Code Online (Sandbox Code Playgroud)

另一个可能有

<DD>
  <EE>
    <FF> Test </FF>
  </EE>
</DD>
Run Code Online (Sandbox Code Playgroud)

如何构造一个可以表示 do AA/BB/CC或(如果失败/不存在)的XPath 表达式DD/EE/FF

Mat*_*ler 5

您可以将其缩短为:

//li[@class = 'asd' or @class = 'dsa']/text()
Run Code Online (Sandbox Code Playgroud)

话虽如此,“不工作”从来都不是对问题所在的准确描述。潜在的错误来源是双引号而不是单引号。如果表达式两边有双引号,则其中的任何引号都必须是单引号。

我使用 or 运算符错误吗?

不,您对or运算符的使用没问题。还有其他问题。(要真正诊断您的问题,我们需要更多背景信息)。