XPath简单的条件语句?如果节点X存在,那么做Y?

Anc*_*end 5 xpath google-sheets xml-parsing

我正在使用谷歌文档进行网页抓取.更具体地说,我使用IMPORTXML功能内置的Google表格,其中我使用XPath选择节点来从中抓取数据.

我要做的是基本上检查特定节点是否存在,如果是,则选择其他一些随机节点.

/*IF THIS NODE EXISTS*/
if(exists(//table/tr/td[2]/a/img[@class='special'])){

   /*SELECT THIS NODE*/ 
   //table/tr/td[2]/a

}
Run Code Online (Sandbox Code Playgroud)

小智 7

你没有像XPath那样的逻辑,但你可能能够做你想要的事情.

如果你想选择//table/tr/td[2]/a但只有它有一个img[@class='special'],那么你可以使用//table/tr/td[2]/a[img[@class='special']].

如果你想在其他情况下选择一些其他节点,你可以将两个路径(|运算符)联合起来,并确保每个路径都有一个[]相互排斥的过滤器(内部),比如一个是路径,另一个是not()那条路.我举个例子,但我不确定你想要的"其他随机节点"......也许你可以澄清一下?

关键是要将XPath视为一种查询语言,而不是程序语言,所以你需要考虑选择器和过滤器,这是一种比大多数程序员习惯的思考问题的方式.但是过滤器不需要与选择器特定相关(例如,您可以使用过滤器开始查看文档的根目录)会导致一些强大的(如果难以阅读)可能性.