En lugar de limitarnos a descargar un único fichero con wget, podemos hacer un uso avanzado del comando y sacar todo su potencial, que seguro que en algún momento nos viene bien y facilita alguna tarea.
En su día ya os enseñé la forma de limitar la velocidad de descarga con wget así que eso nos lo saltamos. Ahí van algunos usos avanzados o menos conocidos de wget.
Descargar una página completa junto a todas sus dependencias
Es decir, si descargamos un HTML usando wget a secas, descargaremos la página HTML pero no las imágenes, CSS, javascript, etc a las que hace referencia. El parámetro «-p» o «–page-requisites» descarga todo este contenido. Si además añadimos el parámetro «–convert-links», los links se convertirán para que funcionen en local una vez descargados. También podemos hacer un backup de los links anteriores con «–backup-converted»:
$ wget --page-requisites --backup-converted https://rm-rf.es
$ ls -l total 4 drwxrwxr-x 3 alex alex 4096 Aug 22 19:02 rm-rf.es $ ls -lR * rm-rf.es: total 68 -rw-rw-r-- 1 alex alex 60519 Aug 21 22:55 index.html -rw-rw-r-- 1 alex alex 242 Apr 28 2011 robots.txt drwxrwxr-x 3 alex alex 4096 Aug 22 19:02 wp-content rm-rf.es/wp-content: total 4 drwxrwxr-x 3 alex alex 4096 Aug 22 19:02 themes [...]
Descargar un website completo
En este caso más que un website completo, lo que podemos hacer es especificar por parámetro el número de niveles que recorrerá wget y descargará todo lo que encuentre en ellos, podemos especificar N niveles, todo ello se descargará en local creando una copia exacta/mirror del website que descargamos. Jugaremos con estos dos parámetros:
-r, --recursive specify recursive download. -l, --level=NUMBER maximum recursion depth (inf or 0 for infinite).
Si quiero descargar por ejemplo 4 niveles de un sitio web:
$ wget -r -l 4 http://google.es/
También puedo guardar un log de las operaciones con «-o «:
$ wget -r -l 4 http://google.es/ -o descarga_website.log
También es bueno combinarlo con «–convert-links».
Descargar página junto con las cabeceras del servidor
Podemos hacer que las cabeceras se van directamente en la salida del comando:
$ wget -S http://www.google.com/ --2014-08-22 19:12:23-- http://www.google.com/ Resolving www.google.com (www.google.com)... .173.194.45.50, 173.194.45.51, 173.194.45.49, ... Connecting to www.google.com (www.google.com)|173.194.45.50|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 302 Found Cache-Control: private Content-Type: text/html; charset=UTF-8 Location: http://www.google.es/?gfe_rd=cr&ei=93n3U4rCJ8TI8gfH-oDwBQ Content-Length: 258 [...]
O guardarlas en el fichero resultante:
$ wget --save-headers http://www.google.com/
$ more google.com/index.html $ more index.html.2 HTTP/1.1 200 OK Date: Fri, 22 Aug 2014 17:13:02 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: PREF=ID=dac6e5ce9196e48f:FF=0:TM=1408727582:LM=1408727582:S=pWmR-xujz_ZeT8Bv; expires=Sun, 21-Aug-2016 17:13:02 GMT; path=/; domain=.google.es Set-Cookie: NID=67=Ek0aw0c0biQWMw-C_RoxO1QEiIdvl54 [...]
Descargar sólo ficheros con una extensión concreta
Los comodines en la URL no nos van a funcionar, para ello debemos usar «-A» seguido de las extensiones a descargar de un directorio concreto, separadas por comas:
wget -r -P /var/tmp -A jpg,jpeg,gif,png http://www.foo.com/imagenes/
Como veis también podemos forzar la ruta de descarga. Así descargamos todas las imágenes del sitio a un directorio local.
Reaunar una descarga cancelada a mitad
Poco más que añadir, si cancelamos una descarga a mitad podemos seguir donde lo hemos dejado con el siguiente comando:
$ wget -nc -r http://www.foo.com/
Mostrar el contenido de la página por STDOUT en lugar de descargarlo
wget -O - http://google.es
Descargar URLs de un fichero de texto
Si tenemos un fichero de txt con un listado de URLs (una en cada línea), podemos descargar todas de vez con el parámetro «-i»:
$ more urls.txt http://google.es http://marca.com $ wget -i urls.txt --2014-08-22 19:25:26-- http://google.es/ Resolving google.es (google.es)... 173.194.41.239, 173.194.41.255, 173.194.41.248, ... Connecting to google.es (google.es)|173.194.41.239|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://www.google.es/ [following] --2014-08-22 19:25:26-- http://www.google.es/ Resolving www.google.es (www.google.es)... 173.194.45.47, 173.194.45.56, [...] --2014-08-22 19:25:26-- http://marca.com/ Resolving marca.com (marca.com)... 193.110.128.199, 2001:67c:2294:1000::f199 Connecting to marca.com (marca.com)|193.110.128.199|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently [...]
Y de momento no se me ocurren más, si sabéis vosotros alguno más, comentadlo!