我正在解析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?
答案 0 :(得分:1)
这样做的简单方法是在search
之后添加一个数组切片。 Nokogiri从search
和NodeSet supports []
:
page.search("//div[@id='cnn_maintt2bul']/div/div/ul/li[count(*)=3]/a")[0, 5]...