我正在尝试抓取一些网站,并且我想要的数据可以在以下任一位置找到,具体取决于网站:
第 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
?
您可以将其缩短为:
//li[@class = 'asd' or @class = 'dsa']/text()
Run Code Online (Sandbox Code Playgroud)
话虽如此,“不工作”从来都不是对问题所在的准确描述。潜在的错误来源是双引号而不是单引号。如果表达式两边有双引号,则其中的任何引号都必须是单引号。
我使用 or 运算符错误吗?
不,您对or
运算符的使用没问题。还有其他问题。(要真正诊断您的问题,我们需要更多背景信息)。