2013-07-12 83 views
6

我有一个nokigiri网络抓取工具,发布到我正在尝试发布到heroku的数据库。我有一个我想从数据库中提取的sinatra应用程序前端。我是Heroku和Web开发新手,并不知道处理这种事情的最佳方式。Heroku和Web抓取

我是否必须将上载到sinatra路径下的数据库的网页抓取脚本(如mywebsite.com/scraper)放到网上,并且使其变得如此晦涩以致没有人访问它?最后,我想让sinatra部分成为从数据库中提取的rest api。

感谢您的所有输入

+1

它取决于ho你经常想让它在某个特定的时间开火 - ? – iain

+1

您的问题需要更多信息才能得到解答。你想从Heroku内抓取? /刮板的功能是什么,是否启动刮板脚本或检索刮掉的内容?您是否更关心如何保护http端点而不是如何在heroku上托管应用程序? –

回答

3

您可以采取两种方法。

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

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

二是刮刀和网络之间的过程中,你有正常的UI交互和刮刀的过程,网络过程中可以生成/谈话网络进程的方式区分。如果你采取这种方式,你应该怎么保护它免受世界其他地区的影响(auth/url混淆等)。

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

0

我做到了通过创建一个rake任务,并使用一次性DYNOS由四十二

这里提到的是我的耙子任务文件

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]