如何在Rails应用程序中集成我自己的scraper?

Ser*_*kin 1 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我刚刚创建了一个带有模型app/models/post.rb的Rails应用程序,并编写了一个scraper scrapers/base_scraper.rb(类BaseScraper),它将目标站点的数据收集到哈希变量数据中.现在我想将数据值插入Post模型.如何在Rails中正确地完成它?我听说过关于Rake的问题,但不知道如何正确使用它.请帮帮我!

And*_*tti 6

假设只data存储一个帖子并且存储在data哈希中的每个密钥都是有效Post字段(column_name),您可以这样做:

Post.create(data)
Run Code Online (Sandbox Code Playgroud)

如果要从控制台启动整个过程,可以lib/tasks使用以下命令在进程目录下创建rake任务:

# scraper.rake
namespace :scraper do
  desc "Run scraper"
  task :run => :environment do
    data = BaseScraper.your_collect_data_class_method
    Post.create(data) if data
  end
end

task :default => 'scraper:run'
Run Code Online (Sandbox Code Playgroud)

然后从控制台运行它作为rake任务 rake scraper

当然我也假设scrapersdir在你的Rails加载路径中.如果没有,请将其添加到您的application.rb文件中.

# application.rb
...
module YourApp
  class Application < Rails::Application
    ...
    config.autoload_paths += Dir["#{config.root}/scrapers/"]
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 您的代码存在问题:您应该将`task:run`更改为`task:run =>:environment`以自动加载rails模型等. (2认同)