2010-06-15 3 views
9

mi chiedevo qual è il modo migliore per salvare tutti i file che vengono recuperati quando Selenio visita un sito. In altre parole, quando il selenio visita lo http://www.google.com, voglio salvare l'HTML, il JavaScript (compresi gli script di riferimento nei tag src), le immagini e il contenuto potenzialmente contenuto negli iframe. Come si può fare?risparmio contenuto della pagina completo utilizzando Selenio

So che getHTMLSource() restituirà il contenuto HTML nel corpo del frame principale, ma come può essere esteso per scaricare il set completo di file necessari per il rendering di quella pagina. Grazie in anticipo!

+0

hai trovato qualcosa? – Toolkit

risposta

9

selenio non è la progettato per questo, si potrebbe o:

  1. Usa getHtmlSource e analizzare il codice HTML risultante per i riferimenti a file esterni, che è quindi possibile scaricare e memorizzare al di fuori di selenio.
  2. Usa qualcosa di diverso da selenio per scaricare e memorizzare una versione offline di un sito web - sono sicuro che ci sono un sacco di strumenti che potrebbero fare questo se si esegue una ricerca. Ad esempio, WGet può eseguire un download ricorsivo (http://en.wikipedia.org/wiki/Wget#Recursive_download)

C'è qualche ragione per cui si desidera utilizzare il selenio? Questa parte della tua strategia di test o stai solo cercando uno strumento che creerà una copia offline di una pagina?

+0

Il motivo per cui vogliamo utilizzare Selenium è perché analizza JavaScript, essenziale per ricostruire un'intera pagina (compreso il traffico degli annunci). – Rick

+0

Nel mio caso, mi piacerebbe realizzare il download con Selenium per motivi di velocità. Devo caricare la pagina in Selenium e Chrome comunque, preferirei non eseguire nuovamente tutte le richieste HTTP e salvare solo ciò che attualmente ho caricato. – Seanny123

+1

+1 - WGet si è dimostrato la soluzione perfetta per ciò di cui avevo bisogno. Fondamentalmente chiamando un URL web (che era un PDF generato dinamicamente) con l'intenzione di salvare localmente il risultato come PDF. –

1

Un buon strumento di ciò è http://www.httrack.com/, selenio non fornisce alcuna API per questo. Nel caso in cui sia necessario salvare l'intero contenuto di una pagina dal caso di test in selenio, è possibile eseguire httrack come strumento a riga di comando.

Grazie

1

Se davvero si vuole utilizzare Selenio allora che cosa si può fare è di emulare Ctrl+S per salvare la pagina, ma poi è più lavoro/difficile (anche dipende dal sistema operativo) per emulare premendo Enter o cambiare la posizione di dove vuoi salvare la pagina web e il suo contenuto.

ho voluto fare la stessa cosa con selenio, ma si rese conto che ho potuto solo utilizzare strumenti come wget, e io davvero non hanno bisogno di utilizzare solo selenio .. Così ho finito per usare wget, è davvero potente e lo fa esattamente quello di cui ho bisogno

Questo è come si dovrebbe fare usando wget

# Save HTML 
    directory = 'directory_to_save_webpage_content/' 
    url = 'http://www.google.com' 
    wget = "wget -p -k -P {} {}".format(directory, url) 
    os.system(wget) 

Gli argomenti passati sono solo per rendere possibile per visualizzare la pagina non in linea come se sei ancora in linea.

--page-requisites   -p -- get all images needed to display page 
--convert-links    -k -- convert links to be relative 
--directory-prefix   -P -- specify prefix to save files to 
+0

ma wget non esegue javascript – Toolkit

+0

Ho provato questo e tutto ciò che è stato restituito era una mia finestra interattiva. Nessun output nella mia directory. – ShaunO