Heroku和Web抓取

我有一个nokigiri web scraper,它发布到我试图发布到heroku的数据库。 我有一个sinatra应用程序前端,我想从数据库中提取。 我是Heroku和Web开发的新手,并不知道处理这类事情的最佳方法。

我是否必须将上传到Web数据库的Web scraper脚本放在sinatra路径下(例如mywebsite.com/scraper)并且只是让它变得模糊不清以至于没有人访问它? 最后,我想让sinatra部分成为从数据库中提取的restapi。

感谢所有输入

您可以采取两种方法。

第一个是使用heroku run YOURCMD通过控制台运行刮刀来使用heroku run YOURCMD 。 只是确保刮刀不写入磁盘但使用数据库。

更多信息: https : //devcenter.heroku.com/articles/one-off-dynos

第二种方法是区分刮板和Web进程,使您具有正常UI交互的Web进程和Web进程可以生成/通信的刮板进程。 如果您采取这种方式,那么由您决定如何保护它免受世界其他地方的影响(auth / url混淆等)。

更多信息: https : //devcenter.heroku.com/articles/background-jobs-queueing

我是通过创建一个rake任务并使用XLII提到的一次性dynos来完成的

这是我的rake任务文件

 require 'bundler/setup' Bundler.require desc "Scrape Site" task :scrape, [:companyname] => :environment do |t, args| puts "Company Name is :" + args[:companyname] agent = Mechanize.new agent.user_agent_alias = 'Mac Safari' puts "Agent (Mac Safari Created)" # MORE SCRAPING CODE end 

您可以通过电话简单地运行它

 heroku run rake scrape[google]