【问题标题】:How do I get content from a website using Ruby / Rails?如何使用 Ruby/Rails 从网站获取内容?
【发布时间】:2011-03-09 18:39:48
【问题描述】:

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

【问题讨论】:

  • 你想完成什么?您想抓取另一个站点并将内容插入数据库吗?您只想在 UI 中显示一些远程内容吗?

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


【解决方案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 页面中的文本。

【讨论】:

    【解决方案2】:

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

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

    https://github.com/sparklemotion/nokogiri

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

    【讨论】:

    • 提供的链接坏了,你能更新一下吗?
    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2013-10-30
    • 2011-02-22
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多