我开始编写抓取工具来从不同的网站获取数据。我在 rake 文件中构建了第一个抓取工具,现在开始编写第二个 rake 文件以从第二个站点获取数据。目前,我正在为我感兴趣的每个网站编写一个特定的抓取工具(而不是尝试构建通用抓取工具)。
我有 3 个问题:
编写 rake 任务对我来说是一个不错的选择吗?我应该考虑其他选择吗?
如何向我的 rake 文件添加函数/方法? (抱歉,非常愚蠢的问题,但我不知道如何构建我的代码......所以现在它只是一个长方法中的 500 行不间断代码)例如,我想要一个“get_description(section) "从页面返回描述的方法。根据我要抓取的网站,该方法可能会有所不同。
如何使用 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/