2010-06-15 38 views
9

Me preguntaba cuál es la mejor manera de guardar todos los archivos que se recuperan cuando Selenium visita un sitio. En otras palabras, cuando Selenium visita http://www.google.com, deseo guardar el HTML, JavaScript (incluidos los scripts a los que se hace referencia en las etiquetas src), las imágenes y, potencialmente, el contenido de los iframes. ¿Cómo puede hacerse esto?Guardar contenido de página completa con Selenium

Sé que getHTMLSource() devolverá el contenido HTML en el cuerpo del marco principal, pero ¿cómo puede extenderse para descargar el conjunto completo de archivos necesarios para representar esa página nuevamente? ¡Gracias de antemano!

+0

¿ha encontrado algo? – Toolkit

Respuesta

9

selenio no es el diseñado para esto, se podía ya sea:

  1. Uso getHtmlSource y analizar el código HTML resultante para las referencias a archivos externos, que luego se puede descargar y almacenar fuera del selenio.
  2. Use algo que no sea Selenium para descargar y almacenar una versión fuera de línea de un sitio web. Estoy seguro de que hay muchas herramientas que podrían hacer esto si realiza una búsqueda. Por ejemplo, WGet puede realizar una descarga recursiva (http://en.wikipedia.org/wiki/Wget#Recursive_download)

¿Hay alguna razón por la que desee utilizar Selenium? ¿Es esto parte de su estrategia de prueba o solo desea encontrar una herramienta que creará una copia fuera de línea de una página?

+0

La razón por la que queremos usar Selenium es porque analiza JavaScript, que es esencial para reconstruir una página completa (incluido el tráfico de anuncios). – Rick

+0

En mi caso, me gustaría realizar la descarga con Selenium por razones de velocidad. Tengo que cargar la página en Selenium y Chrome de todos modos, preferiría no ejecutar todas las solicitudes HTTP de nuevo y guardar solo lo que actualmente tengo cargado. – Seanny123

+1

+1 - WGet demostró ser la solución perfecta para lo que necesitaba. Básicamente, se llama a una URL web (que era un PDF generado dinámicamente) con la intención de guardar el resultado como PDF localmente. –

1

Una buena herramienta para eso es http://www.httrack.com/, Selenium no proporciona ningún API para eso. En caso de que necesite guardar el contenido completo de una página de su caso de prueba en selenio, quizás pueda ejecutar httrack como una herramienta de línea de comandos.

Gracias

1

Si realmente desea utilizar selenio entonces lo que puede hacer es emular Ctrl+S para guardar la página, pero entonces es más trabajo/difícil (también depende del sistema operativo) para emular presionando Enter o cambiar la ubicación de donde desea guardar la página web y su contenido.

que quería hacer lo mismo con selenio, pero se dieron cuenta de que solo podía usar herramientas como wget, y realmente no necesita utilizar sólo selenio .. Así que terminamos usando wget, es muy potente y lo hace exactamente lo que necesito

Esta es la forma en que lo haría utilizando 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) 

Los argumentos pasados ​​son sólo para que sea posible ver la página sin conexión, si todavía estás en línea.

--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

pero wget no ejecuta javascript – Toolkit

+0

Intenté esto y todo lo que devolvió fue una 1 mi ventana interactiva. No hay salida en mi directorio. – ShaunO

Cuestiones relacionadas