web-dev-qa-db-fra.com

Utilitaire Wget like pour télécharger toutes les images dans le répertoire mysite.com/img/

Mon accès au répertoire mysite.com/img/ est bloqué.

Cependant, toutes les images de ce répertoire sont sous la forme n.jpg Où n est la nième image.

Mon accès à mysite.com/img/n.jpg N'est pas bloqué

Existe-t-il de toute façon que j'enregistre les images 1 à 500 (mysite.com/img/1.jpg À mysite.com/img/500.jpg)?

J'utilise Ubuntu 11.10

4
user784637

La solution la plus simple consiste probablement à utiliser des extensions d'accolade bash

wget http://mysite.com/img/{1..500}.jpg

Il y a aussi la possibilité de faire une boucle, vous permettant de mettre un peu d'attente entre chaque requête.

for n in $(seq 1 500); do
  wget http://mysite.com/img/${n}.jpg
  sleep 0.1
done

(Ce qui précède peut être exécuté directement dans le shell.)

6
andol

Il existe également une autre façon de le faire avec wget que j'ai utilisé avec succès pour un site, et vous devriez pouvoir modifier les instructions ci-dessous pour d'autres sites. Cela implique de générer une liste d'URL, puis de nourrir cette liste dans wget.

1) Par exemple, disons que vous voulez télécharger les 63 magazines pdf de Full Circle Magazine (un magazine Ubuntu), mais votre gestionnaire de téléchargement ne peut pas tous les télécharger en même temps. Trouvez donc le lien du premier fichier pdf et vérifiez rapidement que les autres liens du magazine sont au même format URL.

2) Avec les connaissances acquises dans la partie 1, nous pouvons maintenant nous tourner vers notre script pour générer les urls. Le script ci-dessous exécute une boucle jusqu'à, que j'ai modifiée (crédit à son auteur). Vous modifiez ce script en plaçant le nombre de magasins dans le until [ $i = 63 ] part et placez l'url correcte après echo et assurez-vous que "$i" se trouve dans la partie correcte de l'URL à faire écho afin qu'elle change à chaque exécution de la boucle. Les URL sont générées puis ajoutées à un fichier texte - cela se produit en une fraction de seconde lorsque le script est exécuté et n'est pas aussi compliqué à configurer qu'il n'y paraît!

Enregistrez le script dans un éditeur de texte, rendez-le exécutable et exécutez-le; Modifiez-le comme décrit ci-dessus lorsque vous souhaitez télécharger à partir d'un site différent que mon exemple.

#!/bin/bash
   i=0
   until [ $i = 63 ] ; do
    i=$(($i+1))
    echo "http://dl.fullcirclemagazine.org/issue"$i"_en.pdf" >> url.txt
done 

3) Enfin, en supposant que url.txt est dans le répertoire de travail actuel, exécutez:

wget -i url.txt  

Si vous souhaitez enregistrer les téléchargements ailleurs, ajoutez -P ~/MyDirectory après url.txt

Cela fonctionne - si vous l'essayez, entrez ctrl c à abandonner si vous ne voulez pas tous les télécharger!

1
user76204