我可以使用Ruby阅读网页数据吗?

时间:2013-01-09 12:39:17

标签: ruby

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

3 个答案:

答案 0 :(得分:1)

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

P.S。:Capybara gem不仅仅是这个,但它也适用于你的情况。

答案 1 :(得分: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所说,capybara对于处理浏览相关内容非常有用。

每当有宝石时,每隔n分钟或类似情况也可以自动执行此操作。

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

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

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

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

  

Watir以与人们相同的方式推动浏览器。它点击链接,填充   在表格中,按下按钮。 Watir还检查结果,例如是否   预期文本显示在页面上。

一旦你为它点击了一切,只需从网页上抓取结果(或任何你需要的),使用一些XML-Parser(nokogiri将是一个不错的选择)或一些正则表达式。

然后将数据填入数据库。为此我想到了Activerecord,但它可能会或可能不会过度。根据您的数据库,选择您喜欢的任何适配器/连接gem(再次:有很多)。

如果你想每小时都这样做,只需使用whatever gem(为你管理一个cronjob),或者只是在你想要的时候用sleep(x)写一个无限循环。有不止一种方法可以做到这一点。 :)

答案 2 :(得分:1)

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

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

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

安装Ruby 1.9.3它现在是标准。

Trough 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"

完成