2013-07-12 8 views
6

Ho un raschietto web nokigiri che pubblica su un database che sto cercando di pubblicare su heroku. Ho un frontend per applicazioni sinatra che voglio avere dal database. Sono nuovo di Heroku e dello sviluppo web e non conosco il modo migliore per gestire qualcosa di simile.Heroku e Web scraping

Devo posizionare lo script Web raschietto che viene caricato nel database sotto una rotta sinatra (come mywebsite.com/scraper) e rendere così oscuro che nessuno lo visita? Alla fine, mi piacerebbe che la parte di sinatra fosse un'ape di riposo che estrae dal database.

Grazie per tutti gli input

+1

dipende da w spesso vuoi che spari - a comando, ad una certa ora ...? – iain

+1

La tua domanda necessita di un po 'più di informazioni a cui rispondere. Vuoi raschiare dall'interno di heroku? Qual è la funzione di/raschietto, è per dare il via allo script di raschiatura o per recuperare il contenuto raschiato? Sei più preoccupato di come proteggere un endpoint http rispetto a come ospitare un'app su heroku? –

risposta

3

Ci sono due approcci che è possibile adottare.

Il primo consiste nell'utilizzare i dinchi One-off eseguendo il raschietto attraverso la console utilizzando heroku run YOURCMD. Assicurati solo che raschietto non scriva sul disco ma usi il database.

Maggiori informazioni: https://devcenter.heroku.com/articles/one-off-dynos

Il secondo è differenziazione tra raschietto e il processo di web in un modo che si dispone di processo web per la normale interazione UI e un processo raschietto quale processo web può deporre le uova/parlare. Se segui questa strada, tocca a te proteggerlo dal resto del mondo (autorizzazione/url offuscamento, ecc.).

Maggiori informazioni: https://devcenter.heroku.com/articles/background-jobs-queueing

0

l'ho fatto con la creazione di un compito rastrello e utilizzando i lanci una tantum come detto da XLII

Ecco il mio file di task 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 

È può semplicemente eseguirlo chiamando il

heroku run rake scrape[google]