我正在尝试抓取一些网站,根据网站的不同,可以找到我想要的数据:
第1页:
<div>
<ul>
<li class="asd"> SomeText1 </li>
</ul>
</div>
第2页:
<div>
<ul>
<li class="dsa"> SomeText2 </li>
</ul>
</div>
我想要一个XPath表达式,它首先尝试选择SomeText1,如果它不存在,则尝试获取SomeText2。
我已经尝试了//li[@class="asd"]/text() or //li[@class="dsa"]/text()
,但这似乎没有削减它。
我使用or
运算符错了吗?如果是这样,它应该如何使用?
我正在尝试向抓取工具提供XPath,以便查找要存储在数据库中的信息。在给定的网页上,我想要的信息可以是两个不同的地方吗?
这意味着网页1可能是:
<AA>
<BB>
<CC> Test </CC>
</BB>
</AA>
而另一个可能有
<DD>
<EE>
<FF> Test </FF>
</EE>
</DD>
我如何构造一个可以说是的XPath表达式
AA/BB/CC
或(如果失败/不存在)DD/EE/FF
?
答案 0 :(得分:4)
您可以将其缩短为:
//li[@class = 'asd' or @class = 'dsa']/text()
话虽如此,“不工作”绝不能准确描述出错的地方。潜在的错误来源是双引号而不是单引号。如果表达式中有双引号,则内部的任何引号都必须是单引号。
我使用或运算符错了吗?
不,您对or
运算符的使用很好。出了别的问题。 (要真正诊断您的问题,我们需要更多上下文)。
答案 1 :(得分:1)
...试
//li[@class="asd" or @class="dsa"]/text()