3

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

4

2 回答 2

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 页面中的文本。

于 2011-03-09T19:25:08.107 回答
1

如果我理解正确,您需要一个网站抓取工具的 GUI 界面。如果是这样,您可能必须自己构建一个。

抓取网站的最简单方法是使用 nokogiri 或 mechanize gems。基本上,您将为这些库提供网站地址,然后使用它们的 XPath 功能从 DOM 中选择文本。

https://github.com/sparklemotion/nokogiri

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

于 2011-03-09T18:44:38.727 回答