使用mechanize进行解析时,会得到指定的数字

时间:2014-02-27 15:05:45

标签: ruby nokogiri mechanize-ruby

我正在解析CNN.com以获得他们的第一段的五大新闻报道。我有以下代码。

url = "http://edition.cnn.com/?refresh=1"
agent = Mechanize.new
page = agent.get("http://edition.cnn.com/?refresh=1")
page.search("//div[@id='cnn_maintt2bul']/div/div/ul/li[count(*)=3]/a").map{|a|  page.uri.merge a[:href]}.each do |uri| 
 article = agent.get(uri).parser
 puts article.css(".adtag15090+ p").text
 puts "\n"
end

它并不完美,但它有效,然而,它检索所有文章,但我只想检索五篇文章。是否有办法可以使用范围将结果数限制为5?

1 个答案:

答案 0 :(得分:1)

这样做的简单方法是在search之后添加一个数组切片。 Nokogiri从searchNodeSet supports []

返回NodeSet
page.search("//div[@id='cnn_maintt2bul']/div/div/ul/li[count(*)=3]/a")[0, 5]...