1 votos

¿Cómo guardar un sitio web completo con wget, incluidos los archivos solicitados por javascript en línea?

Estoy tratando de descargar un sitio web completo para un proyecto. Estoy trabajando en Linux y suelen utilizar este wget comando para hacer el trabajo

wget -r -p -k -E www.website.org

Pero para este sitio web en particular, no todas las imágenes se han descargado.

Yo después de algunos investigando también he probado algunas otras opciones, por ejemplo:

wget -r -p -k -l 0 -E --no-check-certificate www.website.org

Pero las imágenes siguen desaparecidos. Al inspeccionar el código fuente, me di cuenta de que muchas de las imágenes que faltan son solicitados por en línea de javascript. Por ejemplo:

<a href="index.php" onMouseOut="MM_swapImgRestore();"  
onMouseOver="MM_swapImage('button','','images/button_highlight.gif',1)" >
   <img name="button" src="images/button.gif">
</a>

Hay una manera de incluir esas imágenes con wget?

0voto

jvb Puntos 198

En realidad, no, eso no es una cosa wget fue construir (ni curl, por ejemplo). Javascript puede incluso retraso en la carga de imágenes por una cierta cantidad de tiempo, o esperar a que las imágenes aparezcan en la pantalla (cf. largo de las páginas de desplazamiento).

En su caso, usted podría programación analizar el código javascript para extraer los nombres de archivo (como images/button.gif), a continuación, cargarlos con más llamadas a wget. Pero por supuesto que existe una solución general al problema. También he visto las páginas web con javascript incrustado que no compute Url de imagen o nombres de archivo en tiempo de ejecución - por sesión!

Un enfoque viable para sortear estas javascript ofuscación medidas sería la carga de la página web en un navegador estándar, pero a través de un proxy local (squid viene a mi mente); y, a continuación, examinar (guardar) la caché de proxy.

0voto

Nausix Puntos 11

No estoy seguro de cómo está el sitio es sturctured pero, de hecho, wget cand hacer eso, hay un montón de ejemplos para hacer eso en el manual. Hay una pequeña nota sobre --requisite, por lo que depende de la estructura de su sitio web. Yo nunca había chupar problema por lo que difícilmente puede señalar el "fix".

Normalmente, hago algo como esto :

wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --adjust-extension \
     --convert-links \
     --restrict-file-names=unix \
     --domains <DOMAIN> \
     --no-parent \
     <URL>

También puedes probar con --mirror :

wget \
     --mirror \
     --no-clobber \
     --page-requisites \
     --adjust-extension \
     --convert-links \
     --restrict-file-names=unix \
     --domains <DOMAIN> \
     --no-parent \
     <URL>

Una última nota, si usted tiene algunos archivos de donde el nombre es en "Contenido Desechables" encabezados. (domaine.com/something_that_returns_a_file.php por ejemplo). Puedes probar a utilizar esos si son compatibles con tu versión. Usted puede hacer uso de ellos juntos.

--content-disposition
--metalink-over-http
--trust-server-names

Si hay redirecciones que le dan algunos problemas, como traer de vuelta a la página de inicio y, a continuación, iniciar la descarga-ception, puede establecer el --max-redirect=0.

El manual de la nota es un poco largo para poner aquí completamente, sino que empieza así :

Normalmente, cuando la descarga de una página HTML, cualquier requisito los documentos que pueden ser necesarios para que se muestre correctamente no descargado. El uso de -r junto con -l puede ayudar, pero desde Wget no suelen distinguir entre lo externo y en línea documentos, uno de ellos es generalmente la izquierda con "la hoja de los documentos" que están perdiendo a sus requisitos.

Por ejemplo, dice el documento 1.html contiene una " etiqueta referencia 1.gif y una " etiqueta que señale documento externo 2.html. Decir que 2.html es similar, pero que su imagen es 2.gif y enlaces a 3.html. Decir esto continúa hasta para algunos arbitrariamente alto número.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: