1

我正在寻找一种自动化测试、网页数据填充的方法,并且还想提取网页数据并将它们永久存储到我们的数据库中。有没有办法使用 Ruby 来满足这样的要求?如果是这样,请指导我了解哪些 Ruby 模块可以帮助我。

4

3 回答 3

1

首先,您需要一个合适的操作系统,使用 Linux 或 BSD 或 MacOS。

Windows 适合某些人,但不适合作为 ruby​​ 开发人员的您,太多的库需要 c 扩展,在 cygwin 下编译很麻烦。

我建议,安装一个 Ruby 版本管理器,这样你就可以尝试不同的 ruby​​ 版本,我更喜欢 RVM,即 Ruby 版本管理器。

安装 Ruby 1.9.3 它是当今的标准。

通过 ruby​​gems 安装 gem mechanize,为您需要的网站提供几乎所有自动化。它是 Perl 的 LWP::Mechanize 的继承者。

Nokogiri 对于解析 XML 数据(如 (X)HTML)也很有用,但请记住,您应该在系统上安装先前的 libxml 库。

啊,根据你的问题:

是的,您可以使用 ruby​​ 阅读网站,例如阅读此网页:

http = HTTPClient.new
http.get "http://stackoverflow.com/questions/14235393/can-i-read-webpage-data-using-ruby"

完毕

于 2013-01-09T13:40:33.290 回答
1

由于某些网页可能不是有效的 XML,您还可以使用正则表达式从网页中获取所需的数据。有时 XMLReader 方法会失败。

样本:

require 'open-uri'
page_content = open("http://your_page.com").read
page_body = page_content.scan(/<body>(.*)<\/body>/i).first
# do whatever you want with it

正如 VBSlover 所说,水豚对于处理浏览相关的东西很有用。

使用whengem 也可以每隔n 分钟或类似的时间自动执行此操作。

对于处理数据库存储,有很多非常好的宝石。

最终答案:现在没有什么是你不能用 Ruby 做的。好吧,也许除了写一些真正(!)高性能代码/3D引擎。

编辑: 如果你能说出你到底想做什么,我可能会建议你一些匹配的宝石。通常“有一颗宝石”是一句好话。您可以浏览 ruby​​gems.org 以获取您需要的一些关键字,或者查看https://www.ruby-toolbox.com/以获取针对您的问题的一些分类/排名建议。:)

编辑 2: 看看http://watir.com/ 也许只是在一些无痛的小脚本中玩弄它来感受它,如果它是你的解决方案。

Watir 以与人们相同的方式驱动浏览器。它点击链接,填写表格,按下按钮。Watir 还会检查结果,例如页面上是否出现预期的文本。

一旦你点击了所有内容,只需使用一些 XML 解析器(nokogiri 将是一个不错的选择)或一些正则表达式从网页中抓取结果(或任何你需要的东西)。

然后将数据填充到数据库中。为此想到了 Activerecord,但它可能会也可能不会过大。根据您的数据库,选择您喜欢的任何适配器/连接 gem(同样:有很多)。

如果您想每隔一小时或类似的时间执行此操作,只需使用whenge gem(为您管理一个cronjob),或者如果您愿意,只需在其中编写一个带有sleep(x) 的无限循环。有不止一种方法可以做到这一点。:)

于 2013-01-09T12:55:40.343 回答
1

是的,您可以使用 Ruby 和一些 gem 来完成所有这些任务。
我建议您查看Nokogiri gem数据提取: https
://github.com/sparklemotion/nokogiri 以及表单 和Capybara gem内容的测试和自动化:
https ://github.com/jnicklas/capybara

PS:Capybara gem 的作用远不止于此,但它也可以应用于您的案例。

于 2013-01-09T12:45:38.803 回答