2009-04-07 11 views
8

Sto provando a creare in modo programmato le immagini di anteprima di un gran numero di pagine Web ospitate sul mio sito web basato su ruby ​​/ rails.Come faccio a catturare schermate di pagine Web usando ruby ​​e un server unix?

Voglio essere in grado di codificare un po 'stand-alone di rubino che sembra qualcosa di simile:

require 'awesome-screenshot-maker' 

items.each do |id| 
    url = "http://foo.com/bar/#{id}" 
    shooter = AwesomeScreenshotMaker.new(0.2) # thumbnails are 20% of original 
    shooter.capture(url, "/images/thumbnail-#{id}.png") 
end 

Ho bisogno biblioteca impressionante-screenshot-maker (e le sue dipendenze) di essere abbastanza facile da costruire su Linux, Solaris e Mac OS X. Idealmente si installerà con un singolo comando 'gem install'.

Ho trascorso il pomeriggio esplorando varie opzioni, tra cui Moz snap shooter, webkit2png e rbwebkitgtk. Sono tutti nella parte giusta, ma nessuno sembra funzionare su tutte e tre le piattaforme.

RMagick sembra una possibile opzione se sono disposto a generare PDF dalla mia app di rotaie (anziché da pagine Web), ma questo mi sembra hacky. È anche molto laborioso far funzionare RMagic e imagemagick su Mac OS X.

Esiste una tale libreria che può essere facilmente impostata su tre piattaforme?

+0

Questa domanda è stato chiesto almeno 3 volte in passato. Si prega di vedere le risposte a # 125951, # 686858 e # 713938. –

+1

Queste risposte si riferiscono a applicazioni python, php o da riga di comando. Ho già esplorato queste opzioni e sono ansioso di trovare una soluzione solida basata su ruby. – Lee

risposta

1

V'è un wrapper rubino per PageGlimpse disponibili:

http://code.squidchunks.com/pageglimpse/

Purtroppo, le Condizioni d'Uso dello stato che "Non si deve usare o lanciare qualsiasi sistema automatizzato, compresi, senza limitazione, 'lettori offline', "spider", ecc. per acquisire i dati forniti dal Servizio. "

1

È possibile utilizzare la gemma gastly.

Gastly.capture('http://google.com', 'output.png')

+0

questo funziona per me – draw