Supongamos que quiero que se descargue una copia simple de la página a mi HD para un mantenimiento permanente. No estoy buscando un get recursivo profundo, solo una página, sino también cualquier recurso cargado por esa página para que también se descargue.
Ejemplo: https://www.tumblr.com/
Esperar:
- El index.html
- Cualquier imagen cargada
- Cualquier archivo JS cargado
- Cualquier archivo CSS cargado
- Cualquier imagen cargada en el archivo CSS
- enlaces para los recursos de la página localizados para trabajar con las copias descargadas (sin dependencia de la web)
Me interesa saber si puede ayudarme a encontrar la mejor sintaxis de wget u otra herramienta que haga esto. Las herramientas que he probado generalmente no logran que las imágenes se carguen mediante CSS, por lo que la página nunca se ve bien cuando se carga localmente. ¡Gracias!
Solución tangente
Encontré una manera de hacer esto usando FireFox. El guardado predeterminado está roto y hay un complemento que se llama "Guardar Completo" que aparentemente puede hacer un buen trabajo con esto. Sin embargo, no puede descargarlo porque dice que no es compatible con la versión actual de FireFox. La razón es que se incluyó en este complemento: "Mozilla Archive Format". Instale eso, luego, cuando use Archivo> "Guardar página como ...", hay una nueva opción llamada "Página web completa", que es esencialmente el complemento anterior, que corrige la implementación de stock que usa Firefox (que es terrible). Esta no es una solución WGET, pero proporciona una solución viable.
EDITAR: Otro problema ridículo para cualquiera que pueda estar siguiendo esta pregunta en el futuro, tratando de hacer esto. Haga que el complemento funcione correctamente, necesita Herramientas> Formato de archivo de Mozilla y cambie la configuración predeterminada (terrible) de "tomar una instantánea fiel de la página" para "preservar los scripts y la fuente usando Guardar completa", de lo contrario el complemento vaciará todo sus archivos de script y reemplácelos con el texto "/ * Script eliminado por instantánea guardar * /".
Respuestas:
wget -p -k http://ExampleSite.com
El -p le proporcionará todos los elementos necesarios para ver el sitio correctamente (CSS, imágenes, etc.). El -k cambiará todos los enlaces (para incluir aquellos para CSS e imágenes) para permitirle ver la página sin conexión tal como apareció en línea.
Actualización: Esto es específico para su sitio de ejemplo: tumblr.com
La caida:
-H = Permite que wget vaya a abarcar un host extranjero. Obligatorio ya que tumblr no tiene sus imágenes en la página principal en la misma dirección, están utilizando secure.assets.tumblr.com ver nota sobre la exclusión de dominios
-N = tomará solo los archivos más nuevos que los que tiene actualmente, en caso de que descargue la misma página nuevamente con el tiempo
-k = convierte tus enlaces para verlos sin conexión correctamente
-p = toma todos los elementos necesarios para verlo correctamente (css, imágenes, etc.)
--exclude-domains = dado que la página de inicio de tumblr.com tiene un enlace para quantserve.com y supongo que no quiere estas cosas, debe excluirlas de su descarga de wget. Nota : Esta es una muy importante que debe usar con -H porque si va a un sitio y tienen múltiples enlaces para hosts externos (piense en anunciantes y analíticas), ¡entonces también obtendrá esas cosas!
--no se requiere certificado de verificación ya que tumblr usa https
-U cambia el agente de usuario. No es realmente necesario en este caso, ya que permite el agente de usuario wget predeterminado, pero sé que algunos sitios lo bloquearán. Acabo de tirarlo aquí, así que en caso de que encuentre algún problema en otros sitios. En el fragmento de ejemplo que di, aparece como Mozilla Firefox 6.02a
finalmente tienes el sitio: https://www.tumblr.com
fuente
Para el sitio específico que mencionaste y muchos otros codificados como wget (y curl) simplemente no funcionarán. El problema es que algunos de los enlaces de activos necesarios para representar la página en un navegador se crean a través de JavaScript. Wget tiene una solicitud de función pendiente para ejecutar javascript:
http://wget.addictivecode.org/FeatureSpecifications/JavaScript
Sin embargo, hasta que se complete, los sitios que crean enlaces de activos usando javascript no podrán clonarse usando wget. La solución más fácil es encontrar una herramienta que realmente esté construyendo un DOM y analizando JavaScript como un motor de navegador (es decir, el método de Firefox que mencionó).
fuente
También puede hacer esto automáticamente (o programáticamente si codifica) emitiendo un comando a través de shell usando wget:
Descargará la página y los archivos internos y hará que los enlaces sean locales.
fuente
Creo que eso lo atrapará todo, pero pruébalo y descúbrelo.
fuente
$ ( hombre wget ):
fuente