如何在偶数位置提取文本?

时间:2013-07-12 09:50:54

标签: ruby nokogiri

我正在使用Nokogiri提取页面,该页面返回Nokogiri :: XML :: NodeSet。由此,我想从偶数节点中仅提取文本。

doc.search("h2 a").class #=> Nokogiri::XML::NodeSet
doc.search("h2 a").count #=> returns 148

我对0,2,4,8等感兴趣:

doc.search("h2 a")[0].text #=> the one I wanted.
doc.search("h2 a")[2].text #=> the one I wanted.

2 个答案:

答案 0 :(得分:6)

尝试以下方法:

doc.search("h2 a").map.with_index(0) do |i,nd|
    i.text if nd.even?
end.compact

答案 1 :(得分:3)

也许你想要每个偶数定位的a节点:

doc.search("h2 a:nth-child(even)")

或者您正在寻找所有其他节点:

doc.search("h2 a").select.with_index{|a, i| i.even?}