ruby-on-rails - 用 rails 进行抓取的 rake 任务

标签 ruby-on-rails rspec screen-scraping rake

我开始编写抓取工具来从不同的网站获取数据。我在 rake 文件中构建了第一个抓取工具,现在开始编写第二个 rake 文件以从第二个站点获取数据。目前,我正在为我感兴趣的每个网站编写一个特定的抓取工具(而不是尝试构建通用抓取工具)。

我有 3 个问题:

  1. 编写 rake 任务对我来说是一个不错的选择吗?我应该考虑其他选择吗?

  2. 如何向我的 rake 文件添加函数/方法? (抱歉,非常愚蠢的问题,但我不知道如何构建我的代码......所以现在它只是一个长方法中的 500 行不间断代码)例如,我想要一个“get_description(section) "从页面返回描述的方法。根据我要抓取的网站,该方法可能会有所不同。

  3. 如何使用 RSpec 测试我的任务?我想提供一个链接并确保我的任务输出与我期望的结果相符

感谢您的帮助!

最佳答案

作为一般原则,rake 任务应该非常少。将实际行为引用真实的类。然后可以轻松测试这些类。

示例:

task :scrape do
  Scraper.scrape!
end

class Scraper
   def self.scrape!
     # do something
   end
end

describe Scraper do
  # your tests
end

正如 @brad 所指出的,您可以使用 thor,它本身具有常规的类结构,因此理论上应该更容易测试任务本身。不过我还没这么做过。

你可以在rake中定义方法,但我不知道它们最终会去哪里。你不应该这样做,所以别打扰。保持任务主体最小化,编写普通代码来完成肮脏的工作。

关于ruby-on-rails - 用 rails 进行抓取的 rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4401544/

相关文章:

javascript - 如何使用 node.js 和 javascript 模仿 Facebook 的 "link share"功能

grails - HTTPBuilder 在 Javascript 执行后获取

ruby - 是否可以使用机器人打开浏览器,手动操作页面,然后继续使用机器人?

ruby-on-rails - 启动rails dev服务器会导致无法打开共享对象文件: No such file or directory puma_http11.(LoadError)

ruby-on-rails - 减少sidekiq作业的执行时间

postgresql - 如何让 Database Cleaner 将插入 ID 重置为 1?

ruby-on-rails - 如何测试 ActiveJob 回调?

ruby-on-rails - 概念验证应用程序是否应该进行自动化测试?

ruby-on-rails - 如何在 Ubuntu 服务器上部署 rails 项目?

ruby-on-rails - Rails 在哪里包含来自 lib 的类中的模块?