Obtenir tous les fichiers d'une page Web en utilisant curl


87

Je souhaite télécharger les fichiers, tous en même temps, à partir de la page suivante en utilisant curl: http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

J'ai essayé curl http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/et il est retourné un tas de lignes dans le terminal, mais n'a pas eu de fichiers.

Réponses:


125

Utilisez à la wgetplace. Vous pouvez l'installer avec brew install wgetsi vous avez installé Homebrew ou sudo port install wgetsi vous avez installé MacPorts.

Pour télécharger des fichiers depuis une liste de répertoires, utilisez -r(récursif), -np(ne suivez pas les liens vers les répertoires parents), et -kcréez des liens au format HTML ou CSS téléchargé vers des fichiers locaux (crédit @xaccrocheur).

wget -r -np -k http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

Autres options utiles:

  • -nd (pas de répertoires): télécharge tous les fichiers dans le répertoire courant
  • -e robots.off: ignore les fichiers robots.txt, ne télécharge pas les fichiers robots.txt
  • -A png,jpg: accepte uniquement les fichiers avec les extensions pngoujpg
  • -m (miroir): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Ignorer le téléchargement si des fichiers existent

3
wget -r -np -k http://your.website.com/specific/directory. L'astuce consiste à utiliser -kpour convertir les liens (images, etc.) pour une visualisation locale.
jeudi

brewet portne fonctionne pas pour moi d'installer wget. Que devrais-je faire?
Hoseyn Heydari

@HoseynHeydari: vous pouvez utiliser rudix.org pour les fichiers binaires compilés pour osx. vous devez donc installer rudix puis utiliser: sudo rudix install wget
Mamonu

L'option -kne fonctionne pas toujours. Par exemple, si vous avez deux liens pointant vers le même fichier sur la page Web que vous essayez de capturer de manière récursive, il wgetne semble que convertir le lien de la première instance, mais pas celui de la seconde.
Kun

22

curlne peut lire que des fichiers de pages Web uniques, le groupe de lignes que vous avez obtenu est en fait l’index des répertoires (que vous voyez également dans votre navigateur si vous allez à cette URL). Pour utiliser curlet certains outils Unix magiques pour obtenir les fichiers, vous pouvez utiliser quelque chose comme

for file in $(curl -s http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ |
                  grep href |
                  sed 's/.*href="//' |
                  sed 's/".*//' |
                  grep '^[a-zA-Z].*'); do
    curl -s -O http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/$file
done

qui obtiendra tous les fichiers dans le répertoire en cours.

Pour des besoins plus élaborés (y compris obtenir un tas de fichiers d'un site avec des dossiers / répertoires), wget(comme proposé dans une autre réponse déjà) est la meilleure option.


Je vous remercie. C'est une bonne solution et fournir un exemple concret, c'est génial!
egelev

1
xmllint --html --xpath '//a/@href'est probablement un meilleur analyseur que grep.
Ceving

8

Réf.: Http://blog.incognitech.fr/download-files-from-apache-server-listing-directory/

Vous pouvez utiliser la commande suivante:

wget --execute="robots = off" --mirror --convert-links --no-parent --wait=5 <website-url>

Explication avec chaque option

  • wget: Commande simple pour faire une requête CURL et télécharger des fichiers distants sur notre machine locale.
  • --execute="robots = off": Cela ignorera le fichier robots.txt lors de l'exploration de pages. C'est utile si vous ne recevez pas tous les fichiers.
  • --mirror: Cette option reflètera la structure de répertoires pour l’URL donnée. C'est un raccourci pour -N -r -l inf --no-remove-listingce qui signifie:
    • -N: ne pas ré-récupérer des fichiers sauf si plus récent que local
    • -r: spécifier un téléchargement récursif
    • -l inf: profondeur de récursion maximale (inf ou 0 pour l'infini)
    • --no-remove-listing: ne supprimez pas les fichiers '.listing'
  • --convert-links: faire des liens dans HTML ou CSS téléchargé pointent vers des fichiers locaux
  • --no-parent: ne pas monter dans le répertoire parent
  • --wait=5: attendez 5 secondes entre les récupérations. Pour ne pas écraser le serveur.
  • <website-url>: Ceci est l'URL du site Web à partir duquel télécharger les fichiers.

Bon téléchargement: smiley:


3

Vous pouvez utiliser httrack disponible pour Windows / MacOS et installable via Homebrew.


quelque chose de nouveau pour moi, merci. le mieux est que c'est rapide et rapide: une ligne. il suffit de couper le gras et d'éviter tout déchet.
Peter Teoh

0

Pour ceux d'entre nous qui préfèrent utiliser une application avec une interface graphique, il existe le programme de shareware peu coûteux DeepVacuum pour Mac OS X , qui est implémenté wgetde manière conviviale, avec une liste de paramètres prédéfinis pouvant gérer des tâches courantes. Vous pouvez également enregistrer vos propres configurations personnalisées en tant que préréglages.

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.