Télécharger images via while et wget

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour tlm !

Je voudrais télécharger des images à partir d'un site.

L'url est du type www.lesite.fr/dossier/image0001.png. L'accès à "dossier" est interdit. Et il y a 500 images.

J'ai donc voulu, à partir du bash (je suis sous Ubuntu), via la fonction while et wget, télécharger toutes les images. Or, je n'ai pas réussi à faire quelque chose qui fonctionne. Je viens donc vous demander votre aide.

La première image est à : www.lesite.fr/dossier/image0001.png

La dernière image est à : www.lesite.fr/dossier/image0500.png

Le but est, via la fonction while, remplacer le numéro de l'image xxxx par une variable, qui serait incrémentée de 1 à chaque fois, et d'utliser wget pour la télécharger.

Une petite difficulté repose sur le format de numérotation des images, sous la forme xxxx, il faudrait donc rajouter un ou plusieurs 0 devant le numéro de l'image à chaque fois. Mais au pire, ce n'est pas important, je pourrais lancer 3 fois le script pour les images de 0 à 9, 10 à 99 et 100 à 500.

Je vous remercie d'avance pour votre aide.

+0 -0

Cette réponse a aidé l'auteur du sujet

Bon je ne suis pas certain que ça soit très optimisé, mais j'ai trouvé ça rigolo à faire pour m'occuper.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash

i=0
j=0
k=0

while [ $k -ne 5 -o $i -ne 1 ] ; do
        wget  www.lesite.fr/dossier/image0$k$j$i.png
        ((i++))
        if [ $i -eq 10 ] ; then
                i=0
                ((j++))
        fi
        if [ $j -eq 10 ] ; then
                j=0
                ((k++))
        fi
done

Édité par Cornichon

+0 -0
Auteur du sujet

Salut Cornichon !

Je ne saurais te dire si ton code est optimisé ou pas, mais en tout cas il fonctionne !

Je te remercie de m'être venu en aide :):)

Édité par anonyme

+0 -0

Ou simplement

1
wget -r -l1 --no-parent -A.jpg http://www.lesite.fr/dossier/

voir sur la page de référence de wget.

Explication : -r -l1 signifie téléchargement récursif, jusqu'à la profondeur 1. –no-parent signifie que les références au répertoire parent sont ignorées et -A.jpg signifie de ne télécharger que les fichiers JPG. -A "*.jpg" marche aussi.

+0 -0

Cette réponse a aidé l'auteur du sujet

tinara> Mais il dit n pas y avoir de page d'index de toutes les images, je crois que wget -r se base sur les références présentes sur la page, cette solution n'ira donc pas bien loin.

Je te propose quelque chose à base de printf, pour profiter du formatage des chaînes de caractères (j'ai juste remplacé le while par un for, qui est plus concis pour ce cas):

1
2
3
for i in `seq 500`; do
    wget `printf "http://www.lesite.fr/dossier/image%04d.png" $i`
done

@entwanne : De ce que je comprends pour ma part, c'est qu'en couplant -r -l1 –no-parent, c'est qu'on peut extraire tous les fichiers jpg (avec l'option qui va bien) présents dans le dossier donné en argument. -r permettant le téléchargement récursif.

Sinon, pour respecter la structure des liens, il peut aussi faire :

1
wget  www.lesite.fr/dossier/image0{001..500}.jpg

Édité par tinara

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte