如何使用Ruby / Rails从网站获取内容?

时间:2011-03-09 18:39:49

标签: ruby-on-rails ruby user-interface shoes

我想使用ruby / rails从网站复制一些特定内容。 我需要的内容是在一个marquee html标签内,除以div。 如何使用ruby访问此内容? 更确切地说 - 我想使用某种红宝石(最好是鞋子)。 我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要一个网站刮板的GUI界面。如果是这样,你可能需要自己构建一个。

刮取网站的最简单方法是使用nokogiri或机械化宝石。基本上,您将为这些库提供网站的地址,然后使用其XPath功能从DOM中选择文本。

https://github.com/sparklemotion/nokogiri

https://github.com/sparklemotion/mechanize(文档)

答案 1 :(得分:1)

这不是一个真正的Rails问题。这是你使用Ruby做的事情,然后可能使用Rails,或Sinatra或Padrino显示 - 选择你的毒药。

您可以使用几种不同的HTTP客户端:

Open-URI附带Ruby,是最简单的。 Net :: HTTP附带Ruby并且是标准工具箱,但它是较低级别的,因此您必须做更多工作。 HTTPClient和Typhoeus + Hydra能够进行线程化并具有高级和低级接口。

我建议使用Nokogiri来解析返回的HTML。它功能齐全,功能强大。

require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open('http://www.example.com'))

puts doc.to_html

如果您需要浏览登录屏幕或填写表单,然后才能进入需要解析的页面,那么我建议您查看Mechanize。它在内部依赖于Nokogiri,因此您可以向它请求Nokogiri文档,并在Mechanize检索到所需的URL后解析。

如果您需要处理动态HTML,请查看各种WATIR工具。他们驱动各种网络浏览器,然后让您访问浏览器看到的内容。

获得所需的内容或数据后,可以将其“重新调整”为Rails页面内的文本。