我有一个Rails 3.2.13网站,需要抓取另一个网站才能获得产品描述。在Rails3中,最好的方法是什么?
我听说野村的速度很快。我应该用野卷吗?如果我使用nokogiri,我是否有可能不再保存刮来的数据?我想象它就像从API获取json数据一样,是这样吗?
我推荐Nokogiri和open uri的组合。需要两个gem,然后按照doc = Nokogiri::HTML(open(YOUR_URL))
的思路做一些事情。然后找到要捕获的元素(使用chrome(或等效工具)或Selector Gadget之类的开发工具)。然后可以对单个元素使用doc.at_css(SELECTOR)
,对多个选择器使用doc.search(SELECTOR)
。调用文本方法,响应应该会得到您想要的产品描述。无需将任何内容保存到数据库中(除非你愿意)希望这会有所帮助!
mechanize是一个极好的宝石,可以从其他网站抓取数据作为html。它简单、健壮,并使用nokogiri gem作为结果包装器。
下面的片段将向您展示如何从url:获取Safari浏览器所需的数据
require 'htmlentities'
require "mechanize"
a = Mechanize.new { |agent|
agent.user_agent_alias = 'Mac Safari'
}
@resultHash = {}
a.get(url) do |page|
parsedPage = page.parser
@resultHash[:some_data_name] = parsedPage.at_xpath("//h1[@class='any-class']").text.split(/s+/).join(" ")
end