Il existe un répertoire HTTP en ligne auquel j'ai accès. J'ai essayé de télécharger tous les sous-répertoires et fichiers via wget
. Mais le problème est que lorsque wget
télécharge des sous-répertoires, il télécharge le fichier index.html
qui contient la liste des fichiers de ce répertoire sans télécharger les fichiers eux-mêmes.
Existe-t-il un moyen de télécharger les sous-répertoires et les fichiers sans limite de profondeur (comme si le répertoire que je veux télécharger est simplement un dossier que je veux copier sur mon ordinateur).
Solution:
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/
Explication:
-r
: récursivement-np
: ne pas aller dans les répertoires supérieurs, comme ccc /… -nH
: ne pas enregistrer les fichiers dans le dossier du nom d'hôte--cut-dirs=3
: mais en l'enregistrant au format ddd en omettant les 3 premiers dossiers aaa , bbb , ccc -R index.html
: exclure index.html fichiersJ'ai été capable de faire en sorte que cela fonctionne grâce à à ce message en utilisant VisualWGet . Cela a très bien fonctionné pour moi. La partie importante semble être de vérifier le drapeau -recursive
(voir image).
Nous avons également constaté que le drapeau -no-parent
est important, sinon il essaiera de tout télécharger.
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/
De man wget
‘- r’ ‘- récursif’ Active la récupération récursive. Voir Téléchargement récursif pour plus de détails. La profondeur maximale par défaut est 5.
‘- np’ ‘- --no-parent ' Ne remontez jamais dans le répertoire parent lors d’une extraction récursive. C'est une option utile, car elle garantit que seuls les fichiers situés au-dessous d'une certaine hiérarchie seront téléchargés. Voir Limites basées sur l'annuaire, pour plus de détails.
'- nH' '- --no-Host-Directories' Désactive la génération de répertoires avec le préfixe d’hôte. Par défaut, l’appel de Wget avec ‘-r http://fly.srk.fer.hr/ ’ créera une structure de répertoires commençant par fly.srk.fer.hr/. Cette option désactive un tel comportement.
‘- cut-dirs = number’ Ignore les composants du répertoire number. Ceci est utile pour obtenir un contrôle plus fin sur le répertoire dans lequel la récupération récursive sera enregistrée.
Prenons, par exemple, le répertoire sous " ftp://ftp.xemacs.org/pub/xemacs/ ". Si vous le récupérez avec "-r", il sera sauvegardé localement sous ftp.xemacs.org/pub/xemacs/. Bien que l’option ‘-nH’ puisse supprimer la partie ftp.xemacs.org/, vous êtes toujours bloqué avec pub/xemacs. C’est là que ‘--cut-dirs’ est utile; cela fait que Wget ne "voit" pas nombre de composants de répertoire distant. Voici plusieurs exemples de fonctionnement de l’option ‘--cut-dirs’.
Aucune option -> ftp.xemacs.org/pub/xemacs/ -nH -> pub/xemacs/-nH --cut-dirs = 1 -> xemacs/-nH --cut-dirs = 2 ->.
--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Si vous souhaitez simplement vous débarrasser de la structure de répertoires, cette option est similaire à une combinaison de ‘-nd’ et ‘-P’. Cependant, contrairement à '-nd', '--cut-dirs' ne perd pas avec les sous-répertoires - par exemple, avec '-nH --cut-dirs = 1', un beta/sous-répertoire sera placé dans xemacs/beta, comme on pourrait s'y attendre.
wget
est une ressource inestimable et une chose que j'utilise moi-même. Cependant, il existe parfois des caractères dans l'adresse que wget
identifie comme des erreurs de syntaxe. Je suis sûr qu'il existe une solution à ce problème, mais comme cette question ne portait pas spécifiquement sur wget
, je pensais pouvoir proposer une alternative aux personnes qui tomberont sans aucun doute sur cette page à la recherche d'une solution rapide sans apprentissage. courbe requise.
Quelques extensions de navigateur peuvent le faire, mais la plupart nécessitent l'installation de gestionnaires de téléchargement, qui ne sont pas toujours gratuits, ont tendance à faire mal au monde et à utiliser beaucoup de ressources. Voici celui qui n'a aucun de ces inconvénients:
"Download Master" est une extension pour Google Chrome qui fonctionne parfaitement pour le téléchargement à partir de répertoires. Vous pouvez choisir de filtrer les types de fichiers à télécharger ou télécharger l'intégralité du répertoire.
https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce
Pour une liste à jour des fonctionnalités et d’autres informations, visitez la page du projet sur le blog du développeur:
(utilisable uniquement si vous n'avez pas besoin de deptch récursif)
Utilisez bookmarklet. Faites glisser ce lien dans les favoris, puis éditez et collez ce code:
(function(){ var arr=[], l=document.links; var ext=Prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();
et allez à la page (à partir de laquelle vous voulez télécharger les fichiers), et cliquez sur ce bookmarklet.
Vous pouvez utiliser this Firefox addon pour télécharger tous les fichiers du répertoire HTTP.
https://addons.mozilla.org/en-US/firefox/addon/http-directory-downloader/