Vamos a ver un mini tutorial sobre cómo descargar todos los ficheros enlazados en una página web de forma sencilla un único comando de terminal gracias a la aplicación Wget.
Imagina que has encontrado una web muy interesante, con muchos recursos gratuitos y públicos. Por ejemplo, un banco de imágenes, assets de videojuegos, documentos, PDFs, o lo que sea.
A ti te gustaría descargarlos todos. Bien, podrías darle “botón derecho / guardar” a todos, pero … no es nuestro estilo darle 500 veces a un botón 😉.
Lo normal es que, en este caso, busques alguna aplicación que te ayude a descargarlo. Sin embargo, no es necesario. Podemos resolverlo de forma muy sencilla con nuestro viejo amigo Wget.
Wget es una herramienta de línea de comandos que nos permite realizar peticiones web de manera sencilla. Aunque hay muchas soluciones más complejas, Wget es una opción muy rápida y sencilla de usar si lo único que queremos es descargar ficheros.
En Linux podréis usarlo Wget directamente, porque la mayoría de distribuciones vienen con el preinstalado. En Windows podéis coger alguna versión disponible, como GNU Wget 1.21.4 for Windows, o más sencillo usar WSL.
Simplemente tenemos que usar este comando, por ejemplo:
wget --no-parent -A pdf -r http://www.website.com/url
En este ejemplo,
- Descargará todos los ficheros con extensión PDF en la página web y en todas las subcarpetas de la carpeta url.
- La opción —no-parent indica a Wget que no debe descargar ficheros de carpetas padre de la carpeta especificada
Por supuesto podéis configurar y jugar con los parámetros para adaptarlos a vuestras necesidades.
Es importante decir que esto solo os funcionará para enlaces a ficheros que estén disponibles directamente en Internet, es decir, públicos. Si un fichero está protegido detrás de algún mecanismo de seguridad, como un captcha, no os va a funcionar.
Así de sencillo podéis bajar todos los ficheros de una web únicamente con un comando de consola de comandos, sin necesidad de hacer un script, o tener que usar un programa de terceros ¡hasta la próxima!.