2013-11-27 9 views
8

Ora sto usando il selenio per salvare una pagina web per l'immagine.è possibile eseguire il rendering di una pagina Web direttamente su un'immagine in python?

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get("some url") 
browser.save_screenshot(img) 
browser.quit() 

Ma c'è un problema che ogni volta si aprirà una finestra.

Esiste un modo per eseguire il rendering di un'immagine direttamente su un'immagine?

+2

se si usa Linux/Unix e siete coraggiosi, si può sperimentare con l'esecuzione del browser Web con [Xvfb ] (http://en.wikipedia.org/wiki/Xvfb), un server X11 che esegue il rendering delle immagini in memoria senza visualizzarle. –

+0

Motore di rendering di Firefox Gecko può essere effettivamente utilizzato per il rendering "fuori schermo" su un buffer. Ma provare a interfacciarmi con Gecko di Python, specialmente perché hanno smesso di supportare l'incorporamento di Gecko dopo 5.0, e non ha mai completato gli esempi, è un incubo. Potresti farlo scrivendo un'app XUL/JS, eseguendo _that_ in Firefox/XULRunner, quindi eseguendo lo scripting con Python. Ma non sarà ancora divertente. – abarnert

+1

un'altra opzione è quella di utilizzare i collegamenti del webkit Qt: http://www.linux.com/learn/docs/ldp/284676-converting-html-to-pdf-using-python-and-qt – georg

risposta

2

Ho trovato una soluzione al How do I run Selenium in Xvfb?

Funziona perfettamente in linux.

from pyvirtualdisplay import Display 
display = Display(visible=0, size=(800, 600)) 
display.start() 
browser = webdriver.Firefox() 
browser.get("some url") 
browser.save_screenshot(img) 
browser.quit() 
display.stop()