2013-07-12 85 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]