Binary Coffee

Como descargar un sitio completo con wget

bash hack linux shell internet

Esta idea de descargar un sitio completo para uso offline es harto conocida y aplicada por los cubanos desde hace años debido a las limitantes de acceso a Internet. Incluso hoy en día sigue usándose para abaratar costos.

Un ejemplo clásico de un sitio con versión offline que es copiado y almacenado a menudo en los discos de los desarrolladores de software es w3schools.com.

Para descargar sitios completos y consumir su contenido estático conservando las imágenes, los enlaces internos y los estilos usaremos la herramienta de línea de comandos wget. Seguro existen otras herramientas, incluso con interfaz gráfica, si conoces alguna no dudes en compartirla en los comentarios.

Supongamos que queremos descargar el sitio xamarinhelp.com, el comando a invocar sería este:

wget \
     --recursive \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains xamarinhelp.com \
     --no-parent \
     -l 2 \
     -o wget-rec-download.log \
         xamarinhelp.com

Expliquemos algunos argumentos:

  • --recursive hace que wget descargue no solo index.html sino recursivamente todo enlace a partir ahí en el dominio definido.
  • -l es la profundidad máxima a seguir en la recursividad. En el ejemplo si una página está como mínimo a más de dos enlaces del inicio pues no se descargaría. Para la mayoría de los blogs y sitios de documentación basta con profundidad 2.
  • --restrict-file-names=windows le dice a wget que renombre los archivos descargados para que sean compatibles con los sistemas de ficheros de windows.
  • -o wget-rec-download.log le dice que guarde toda la salida de información que wget por defecto imprime por la consola que la envíe en su lugar al fichero wget-rec-download.log. Si te gusta ver todo el proceso de descarga pues excluye este parámetro.

¡Listo, eso es todo! En otro post explicaré como usar este comando en un script junto a otros comandos que le den más funcionalidad de modo que pueda ser ejecutado en algun servicio cloud o PC de algún amigo en el exterior y el script se encargue de descargar el sitio, comprimirlo y subir el comprimido a algún servidor y así te ahorrarías incluso más tiempo e Internet.

Opiniones
noavatar
Muy bueno el tema, también hay que tener en cuenta algo muy importante y es que al utilizar algoritmos recursivos el website puede bloquear la ip al detectar accesos demasiado rápido, por lo que es recomendable utilizar una demora puede ser de unos 20ms. Además, que el website puede verificar la identidad del navegador. Un ejemplo sería: wget --wait=20 --limit-rate=20k -r -p -U Chrome site.com