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

时间:2015-01-10 11:30:01

标签: css ruby xpath nokogiri

在页面上有多个包含相同信息的节点。我的xpath得到了两个,我不想要那个。我只想要一个

这是我的xpath

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

我确实尝试了

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

,但没有运气

2 个答案:

答案 0 :(得分:1)

您可以使用at_xpath method代替xpath仅返回表达式的第一个匹配项:

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

您也可以在first返回的节点集上使用xpath

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

答案 1 :(得分:0)

我用这样的红宝石解决了它

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

我在这里做的是用空格分割两个,然后我选择第一个。这就行了。