Astuces pour télécharger tout un site avec wget
wget est un petit outil permettant de télécharger le contenu d'un site depuis la ligne de commande. Il supporte l'accès via HTTP, HTTPS et FTP.
Par exemple pour downloader tous les fichiers pdf d'une url donnée :
$ mkdir pdf; cd $_; wget -r -nd -np -l3 -A '*.pdf' http://www.exemple.com/pdf/
Ici nous créons un répertoire pdf, nous nous déplaçons dedans avec cd $_ ($_ prend l'argument de la dernière commande ici pdf) et lançons la commande wget avec certaines options :
- -r (recursive) c'est-à-dire qu'il va aller dans les sous-répertoires existant de votre url
- -nd (no-directories) ne créé pas les répertoires qu'il pourrait trouver. Tous les fichiers seront directement copiés dans le répertoire courant.
- -np (no-parent) wget ira juste vérifier dans le répertoire "pdf" du site www.exemple.com et non dans tout le site.
- -l3 (level-depth) jusqu'a quel niveau de sous-répertoire wget ira chercher les fichiers. Par défaut, cette valeur est à 5
- -A '*.pdf' va rechercher tous les fichiers avec l'extension .pdf
Dans notre commande, l'utilisation du point virgule ";" permet d'enchainer plusieurs commandes sur la même ligne.
Voyons d'autres utilisation de wget. Pour les options, je vous invite à jeter un oeil à la page de manuel (man wget)
Récupérer une page HTML :
$ wget -nd -pHEKk http://www.debianworld.org/wget
Continuer le téléchargement d'un gros fichier :
$ wget -c http://www.exemple.com/gros.fichier.iso
Récuperer les 5 premiers fichiers iso des cd Debian :
$ wget http://ftp.se.debian.org/debian-iso/current/i386/iso-cd/debian-40r4a-i386-CD-[1-5].iso
Lancer wget avec une limitation de la bande passante à 90KB/s dans ce cas :
$ wget --limit-rate=90k url
Avoir une copie exacte d'un site :
$ wget --mirror http://www.exemple.com/


Commentaires
#1 Copie exacte ? Pas si simple
L'option --mirror ne suffit pas pour une copie utilisable du site. Voir les détails dans Générer une version statique d'un site Web.