我正试图从CNN.com上抓下五个最新的故事并检索他们的链接以及每个故事的第一段。我有这个简单的脚本:
url = "http://edition.cnn.com/?refresh=1"
agent = Mechanize.new
agent.get("http://edition.cnn.com/?refresh=1").search("//div[@id='cnn_maintt2bul']/div/div/ul/li[count(*)=3]/a").each do |headline|
article = headline.text
link = URI.join(url, headline[:href]).to_s
page = headline.click(link)
paragraph1 = page.at_css(".adtag15090+ p").text
puts "#{article}"
puts "#{link}"
puts "#{paragraph1}"
puts "\n"
end
此代码无效,因为无法识别click
方法。它会带来这个错误:
cnn_scraper.rb:10:in `block in <main>': undefined method `click' for #<Nokogiri:
:XML::Element:0x2c49b40> (NoMethodError)
CNN.com上所有文章的第一段都有选择器.adtag15090+ p
。还要注意它正在解析所有文章,但我只想要五个。关于如何使用Nokogiri和Mechanize获得前五个及其第一段的任何想法?