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

问题描述:

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

+0

你想完成什么?你想刮另一个网站,并将内容插入数据库?你只是想在用户界面中显示一些远程内容吗? – Intelekshual 2011-03-09 18:44:06

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

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

开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 

如果需要通过登录画面中进行导航或填写表格,你得到你需要解析页面之前,那么我建议你看机械化。它在内部依赖于Nokogiri,所以你可以要求它获得一个Nokogiri文档,并在Mechanize获取所需的URL后解析掉。

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

一旦你有了你想要的内容或数据,你就可以在Rails页面中“重新调整”它的内容。

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

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

https://github.com/sparklemotion/nokogiri

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

+0

提供的链接已损坏,你可以更新它们吗? – Alfie 2015-01-20 09:09:20

+2

当然,老板 – 2015-01-20 16:20:14

+0

非常感谢.. :) – Alfie 2015-01-20 16:48:45