如果存在多个节点,则 xpath 仅获取一个节点

xpath only get one node if more than one exsist

在一个页面上有多个节点包含相同的信息。我的 xpath 两者兼而有之,我不想要那样。我只想要一个

这是我的 xpath

//em[contains(text(), "Telefon:")]/following-sibling::span

我试过

//em[contains(text(), "Telefon:")]/following-sibling::span[1]

,但运气不好

我已经用ruby这样解决了

docEachLinks.xpath('//em[contains(text(), "Telefon:")]/following-sibling::span').text.split(" ").first

我在这里所做的是用 space 将两者分开,然后我选择第一个。这成功了。

您可以使用 at_xpath method 而不是 xpath 来仅 return 表达式的第一个匹配项:

doc.at_xpath('//em[contains(text(), "Telefon:")]/following-sibling::span')

您也可以只在 xpath 编辑的节点集 return 上使用 first:

doc.xpath('//em[contains(text(), "Telefon:")]/following-sibling::span').first