1

我有一个 Rails 3.2.13 网站,需要抓取另一个网站来获取产品描述。在 Rails 3 中执行此操作的最佳方法是什么?

我听说nokogiri很快。我应该使用 nokogiri 吗?如果我使用 nokogiri,我是否有可能不再需要保存抓取的数据?我想这就像从 API 获取 json 数据一样,是这样的吗?

4

2 回答 2

4

我会推荐 Nokogiri 和 open-uri 的组合。需要两个 gem,然后按照doc = Nokogiri::HTML(open(YOUR_URL)). 然后找到您要捕获的元素(使用 chrome 中的开发人员工具(或等效工具)或类似Selector Gadget的工具。然后您可以将doc.at_css(SELECTOR)其用于单个元素或doc.search(SELECTOR)多个选择器。调用 text 方法,响应应该为您提供产品您正在寻找的描述。无需将任何内容保存到数据库中(除非您愿意)希望对您有所帮助!

于 2013-08-12T04:24:22.117 回答
2

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
于 2013-08-12T05:31:03.047 回答