我需要从另一个站点播种或抓取数据,以便获得项目的内容。
如何使用自己的Rails应用程序从另一个站点抓取数据?您是否使用单独的应用程序/服务器来运行某种Cron作业,然后将该数据添加到Rails应用程序中?还是可以让您自己的网站抓取数据并直接显示?
我的第一个想法是使用Mechanize刮取一个站点,然后将数据作为种子数据添加到我的rails应用程序的“夹具”中。有没有更好的办法?甚至还有一种方法可以使用我自己的Rails应用程序连续抓取其他站点以显示数据?
答案 0 :(得分:1)
您可以使用rufus调度程序和watir-dom-wait gem作为您的问题解决方案。我也为抓取亚马逊Kdp图书清单抓取完成了类似的任务 通过使用watir-dom-wait gem,您还可以获取机械化请求的ajax调用请求的数据,而Nokogiri将不适用于Ajax
require 'rufus-scheduler'
require 'watir-dom-wait'
require 'selenium-webdriver'
scheduler = Rufus::Scheduler.new
scheduler.in '1d' do
download_report
end
#download the report form amazon kdp
def download_report
#login
@browser = Watir::Browser.new :chrome, options: {prefs: prefs}
@browser.goto 'https://kdp.amazon.com/en_US/reports-new'
@browser.input(:name => "email").send_keys("test@gmail.com")
@browser.input(:name => "password").send_keys("password")
@browser.input(:id => 'signInSubmit').click
@browser.span(:text => "Generate Report").click
end
答案 1 :(得分:0)
我使用heroku,它带有一个称为Scheduler的东西,对于我的小项目来说效果很好。我相信它与cron非常相似。
一旦数据被废弃。它直接进入数据库(psql),然后您可以通过数据库查询显示所需的内容
答案 2 :(得分:0)