J'utilise wget pour télécharger toutes les images d'un site Web. Cela fonctionne bien, mais la hiérarchie d'origine du site est stockée avec tous les sous-dossiers. Les images sont donc dispersées. Existe-t-il un moyen de télécharger toutes les images dans un seul dossier? La syntaxe que j'utilise actuellement est la suivante:
wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
Essaye ça:
wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
Voici quelques informations supplémentaires:
-nd
empêche la création d'une hiérarchie de répertoires (c'est-à-dire pas de répertoires ).
-r
active la récupération récursive. Voir Téléchargement récursif pour plus d'informations.
-P
définit le préfixe de répertoire dans lequel tous les fichiers et répertoires sont enregistrés.
-A
définit une liste blanche pour extraire uniquement certains types de fichiers. Les chaînes et les modèles sont acceptés et les deux peuvent être utilisés dans une liste séparée par des virgules (voir ci-dessus). Voir Types de fichiers pour plus d'informations.
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
-nd
: aucun répertoire (enregistre tous les fichiers dans le répertoire actuel; -P directory
modifie le répertoire cible)-r -l 2
: niveau récursif 2-A
: extensions acceptéeswget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
-H
: span hôtes (wget ne télécharge pas les fichiers de différents domaines ou sous-domaines par défaut)-p
: conditions requises pour la page (comprend des ressources telles que des images sur chaque page)-e robots=off
: exécute la commande robotos=off
comme si elle faisait partie du fichier .wgetrc
. Cela désactive l'exclusion du robot, ce qui signifie que vous ignorez le fichier robots.txt et les balises méta du robot (vous devez connaître les implications que cela comporte, prenez garde).Exemple: obtenez tous les fichiers .jpg
à partir d'une liste de répertoires donnée à titre d'exemple:
$ wget -nd -r -l 1 -A jpg http://example.com/listing/
J'ai écrit un shellscript qui résout ce problème pour plusieurs sites Web: https://github.com/eduardschaeli/wget-image-scraper
(Gratte les images d'une liste d'URL avec wget)
Essaye celui-là:
wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com
et attendez qu'il supprime toutes les informations supplémentaires
Selon la page de manuel, le drapeau -P est:
-P préfixe --directory-prefix = prefix Définit le préfixe de répertoire sur préfixe. Le préfixe de répertoire est le répertoire dans lequel tous les autres fichiers et sous-répertoires seront enregistrés, c’est-à-dire en haut de l’arborescence de récupération. Le défaut est. (le répertoire en cours).
Cela signifie qu’il ne spécifie que la destination mais l’endroit où sauvegarder l’arborescence. Cela n’aplatit pas l’arbre dans un seul répertoire. Comme mentionné précédemment, le drapeau -nd fait réellement cela.
@Jon à l'avenir, il serait utile de décrire ce que le drapeau fait pour que nous comprenions comment quelque chose fonctionne.
Les solutions proposées sont parfaites pour télécharger les images et s’il suffit de sauvegarder tous les fichiers du répertoire que vous utilisez. Mais si vous souhaitez enregistrer toutes les images dans un répertoire spécifié sans reproduire l’arborescence hiérarchique complète du site, essayez d’ajouter des "repères coupés" à la ligne proposée par Jon.
wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3
dans ce cas, les répertoires coupés empêcheront wget de créer des sous-répertoires jusqu’au 3ème niveau de profondeur dans l’arborescence hiérarchique du site Web, en sauvegardant tous les fichiers du répertoire que vous avez spécifié.Vous pouvez ajouter plus de "répertoires coupés" avec des sont des sites avec une structure profonde.