2010-10-15 18 views
6

Pensi che sia tecnicamente possibile prendere uno screeshot di un sito web a livello di programmazione?È tecnicamente possibile fare uno screenshot di un sito web a livello di programmazione?

Mi piacerebbe creare una attività Python pianificata che esegue la scansione di un elenco di siti Web che utilizzano uno screenshot della loro homepage.

Pensi che sia tecnicamente fattibile o conosci siti Web di terze parti che offrono un servizio simile (Input: url --> Output: screenshot)?

Qualche suggerimento?

+6

Sei alla ricerca di funzionalità come quello che offre http://www.browsershots.org? Codice sorgente disponibile su http://code.google.com/p/browsershots/ – birryree

+1

@birryree dovresti rispondere invece di commentare :) Penso che sia una buona risposta – samy

+1

Sono d'accordo con samy - dopotutto risponde alla domanda! :) –

risposta

1

Come su pyGTK

import gtk.gdk 

w = gtk.gdk.get_default_root_window() 
sz = w.get_size() 
print "The size of the window is %d x %d" % sz 
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1]) 
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1]) 
if (pb != None): 
    pb.save("screenshot.png","png") 
    print "Screenshot saved to screenshot.png." 
else: 
    print "Unable to get the screenshot." 
+0

ImageMagick è solo una generica libreria di funzioni per fare il lavoro sulle immagini. Sarebbe come rispondere alla domanda "Come posso implementare FFT in C#?" e tu rispondendo "Oh, puoi usare qualcosa nella classe di matematica per quello". – Brad

+0

In che modo ImageMagick offre la possibilità di eseguire il rendering HTML in un'immagine? –

+1

Grazie a @David, molto apprezzato. – Fenton

0

E 'certamente tecnicamente possibile.

Probabilmente si dovrà eseguire il rendering dell'HTML direttamente su un file immagine (o più probabilmente su una bitmap in memoria che viene scritta su un file immagine una volta completato).

Non conosco librerie che facciano questo per voi (a parte un WebKit modificato, forse) ... ma ci sono certamente siti Web che lo fanno.

Ovviamente, questo è un po 'più complicato della semplice apertura della pagina in un browser su una macchina e di uno screenshot in modo programmatico, ma il risultato sarebbe probabilmente migliore se non ti interessa il risultato di uno specifico browser .

3

È possibile controllare webkit2png (solo OS X) e khtml2png (Linux) e questo post (utilizzare PyQt e WebKit).

+0

webkit2png funziona anche su GNU/Linux, vedi questo post: http://gfdsa.gfdsa.org/2012/08/15/making-web-pages-screenshots-with-webkit2png-flash-included/ –

1

Ho usato selenio e PhantomJS.

from selenium import webdriver 
driver = webdriver.PhantomJS() 
driver.get("http://anyurl.com") 
driver.save_screenshot("/path/to/folder") 

essere sicuri di mettere le PhantomJS eseguibili nel $ PATH.

Problemi correlati