martes, 21 de mayo de 2013

wget: descargar un sitio completo para navegar offline


wget es una herramienta de consola que viene instalada en todos los sistemas Linux.
Nos permite de forma automática descargar un sitio web y todo su árbol de directorios, archivos, imágenes, ficheros CSS,... a nuestro disco duro, con el objeto de poder navegar por él de forma offline, sin red.

A mí esta opción me viene de perlas, porque cuando me toca dar clases en una isla que no es la mía, lógicamente al lugar que me mandan no contrato internet.

De modo que aprovecho en el instituto, que sí tengo red, para descargar sitios de mi interés y poder navegar por ellos en casa, sin internet.

Esto lo suelo hacer con cierta frecuencia con los tutoriales de w3schools, un sitio absolutamente recomendable para iniciarse en una nueva tecnología que te toque aprender.

El problema actual que me surge es que quiero repasar el tutorial que tiene w3schools de XML para consultarlo en casa.

Veamos cómo hacerlo.

1. Visitamos el sitio online

En mi caso concreto, voy a la página de w3schools:



 y dentro de ésta, me interesa el tutorial del XML:



Es clave fijarnos en la URL asociada al sitio que queremos descargar, porque si no es fácil equivocarse y descargar w3schools al completo, lo cual puede suponer unos cuantos gigas en nuestro disco duro y unas cuantas horas esperando.

En mi caso, yo solo quiero que descargue todo lo que cuelgue de la dirección http://www.w3schools.com/xml/ hacia abajo.



2. Creamos un directorio en el que descargar el sitio

En mi disco duro, bajo la carpeta Documents, creo una nueva carpeta que voy a llamar xml_w3schools:



3. Descargamos el sitio con wget

Una vez creada la carpeta en la que voy a descargar el tutorial, abro una consola y me posiciono justo dentro de ella.

Con el siguiente comando, descargamos el sitio completo que cuelque desde la dirección indicada hacia abajo:
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --domains w3schools.com --no-parent http://www.w3schools.com/xml/

donde:
  • --recursive indica que de forma recursiva profundize en el árbol de directorios del sitio remoto
  • --no-clobber evita re-descargar archivos que ya se hubieran descargado. Lo usamos por si has intentado una primera vez, se ha descargado parte del sitio, y por alguna razón se ha interrumpido y vuelves a lanzar la descarga.
  • --page-requisites, descarga absolutamente todo lo que necesite cada página: imágenes, CSS,...
  • --html-extension, convierte todas las extensiones de fichero a .html. En mi caso es clave, porque contiene páginas .asp, que en local no voy a poder explorar.
  • --convert-links, convierte los enlaces a fichero local, de modo que pueda navegar por todos los hipervínculos de forma local, offline.
  • --domains XXX, para que no descargue nada que se salga de este dominio, es decir, algún enlace que apunte a alguna página fuera de w3schools.
  • --no-parent, para que no suba a los niveles superiores, sino que solo me interesa lo que cuelga de la URL bajo la carpeta xml, no hacia arriba
  • y al final, la URL de comienzo de descarga




4. Lo que tengo en mi disco duro al terminar la descarga

No ha tardado más de 30 segundos en descargar lo que necesito.
En mi carpeta ahora tengo los siguientes archivos, carpetas, imágenes,...



5. Listo, accedemos desde local al tutorial

Bajo la carpeta xml, tenemos default.asp.html, que es el archivo con el que w3schools inicia el tutorial que me interesa: