我正在寻找一种能够实现的解决方案:
- 重复执行抓取任务(nokogiri)
- 通过http://www.myapp.com/interval更改时间间隔(示例)
完成这项工作的最佳解决方案/方法是什么?
我知道的选项
- 自定义耙子任务
- 鲁弗斯调度器
现在的情况
在./config/initializers/task_scheduler.rb
我有:
require 'nokogiri'
require 'open-uri'
require 'rufus-scheduler'
require 'rake'
scheduler = Rufus::Scheduler.new
scheduler.every "1h" do
puts "BEGIN SCHEDULER at #{Time.now}"
@url = "http://www.marktplaats.nl/z/computers-en-software/apple-ipad/ipad-mini.html? query=ipad+mini&categoryId=2722&priceFrom=100%2C00&priceTo=&startDateFrom=always"
@doc = Nokogiri::HTML(open(@url))
@title = @doc.at_css("title").text
@number = 0
2.times do |number|
@doc.css(".defaultSnippet.group-#{@number}").each do |listing|
@listing_title = listing.at_css(".mp-listing-title").text
@listing_subtitle = listing.at_css(".mp-listing-description").text
@listing_price = listing.at_css(".price").text
@listing_priority = listing.at_css(".mp-listing-priority-product").text
listing = Listing.create(title: "#{@listing_title}", subtitle: "#{@listing_subtitle}", price: "#{@listing_price}")
end
@number +=1
end
puts "END SCHEDULER at #{Time.now}"
end
它不工作吗?
是的,当前设置正在运行。但是,我不知道如何通过http://www.myapp.com/interval(示例)启用更改间隔时间。
更改scheduler.every "1h"
为scheduler.every "#{@interval} do
不起作用。
我必须在哪个文件中定义@interval
它才能在其中工作task_scheduler.rb
?