Wie lade ich ein HTTP-Verzeichnis mit allen Dateien und Unterverzeichnissen herunter, wie sie in der Liste der Online-Dateien / Ordner angezeigt werden?

187

Es gibt ein Online-HTTP-Verzeichnis, auf das ich Zugriff habe. Ich habe versucht, alle Unterverzeichnisse und Dateien über herunterzuladen wget. Das Problem ist jedoch, dass beim wgetHerunterladen von Unterverzeichnissen die index.htmlDatei heruntergeladen wird, die die Liste der Dateien in diesem Verzeichnis enthält, ohne die Dateien selbst herunterzuladen.

Gibt es eine Möglichkeit, die Unterverzeichnisse und Dateien ohne Tiefenbegrenzung herunterzuladen (als ob das Verzeichnis, das ich herunterladen möchte, nur ein Ordner ist, den ich auf meinen Computer kopieren möchte).

Online-HTTP-Verzeichnis

Omar
quelle

Antworten:

352

Lösung:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Erläuterung:

  • Es werden alle Dateien und Unterordner im Verzeichnis ddd heruntergeladen
  • -r : rekursiv
  • -np: nicht in obere Verzeichnisse wie ccc /…
  • -nH : Dateien nicht im Hostnamenordner speichern
  • --cut-dirs=3: aber speichern Sie es in ddd, indem Sie die ersten 3 Ordner aaa , bbb , ccc weglassen
  • -R index.html: ohne index.html- Dateien

Referenz: http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/

Mingjiang Shi
quelle
17
Danke dir! Auch FYI nach dieser können Sie verwenden , -Rwie -R cssalle CSS - Dateien auszuschließen, oder verwenden Sie -Awie -A pdfnur Download - PDF - Dateien.
John
7
Vielen Dank! Zusätzliche Ratschläge von wget man page When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness.
jgrump2012
3
Ich erhalte den Fehler 'wget' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.
Hamish
1
@hamish Möglicherweise müssen Sie zuerst wget installieren, oder das wget befindet sich nicht in Ihrem $ PATH.
Mingjiang Shi
16
Gute Antwort, aber beachten Sie, dass robots.txtdies nicht funktioniert , wenn eine Datei das Herunterladen von Dateien im Verzeichnis verbietet. In diesem Fall müssen Sie hinzufügen -e robots=off . Siehe unix.stackexchange.com/a/252564/10312
Daniel Hershcovich
45

Dank dieses Beitrags mit VisualWGet konnte ich dies zum Laufen bringen . Es hat super für mich funktioniert. Der wichtige Teil scheint darin zu bestehen, die -recursiveFlagge zu überprüfen (siehe Bild).

Es wurde auch festgestellt, dass die -no-parentFlagge wichtig ist. Andernfalls wird versucht, alles herunterzuladen.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

mateuscb
quelle
2
Gerade gefunden - Dezember 2017. Es funktioniert gut. Ich habe es bei sourceforge.net/projects/visualwget
SDsolar
2
Funktionierte gut auf Windows-Computer, vergessen Sie nicht, die in der Antwort genannten Optionen zu überprüfen, sonst wird es nicht funktionieren
csharpcoder
Funktioniert nicht mit bestimmten https. @ DaveLucre Wenn Sie es mit wget in cmd-Lösung versuchen würden, könnten Sie es auch herunterladen, aber einige Server erlauben es nicht, denke ich
Yannis Dran
Was macht geprüft --no-parent?
T.Todua
1
Arbeiten im März 2020!
Herr Programmierer
7
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Von man wget

'-r' '--recursive' Aktiviert das rekursive Abrufen. Weitere Informationen finden Sie unter Rekursiver Download. Die standardmäßige maximale Tiefe beträgt 5.

'-np' '--no-parent' Steigen Sie beim rekursiven Abrufen niemals in das übergeordnete Verzeichnis auf. Dies ist eine nützliche Option, da dadurch garantiert wird, dass nur die Dateien unterhalb einer bestimmten Hierarchie heruntergeladen werden. Weitere Informationen finden Sie unter Verzeichnisbasierte Grenzwerte.

'-nH' '--no-host-verzeichnisse' Deaktiviert die Generierung von Verzeichnissen mit Hostpräfix . Standardmäßig wird durch Aufrufen von Wget mit '-r http://fly.srk.fer.hr/ ' eine Struktur von Verzeichnissen erstellt, die mit fly.srk.fer.hr/ beginnen. Diese Option deaktiviert ein solches Verhalten.

'--cut-dirs = number' Ignoriert die Komponenten des Nummernverzeichnisses . Dies ist nützlich, um eine detaillierte Kontrolle über das Verzeichnis zu erhalten, in dem der rekursive Abruf gespeichert wird.

Nehmen Sie zum Beispiel das Verzeichnis unter ' ftp://ftp.xemacs.org/pub/xemacs/ '. Wenn Sie es mit '-r' abrufen, wird es lokal unter ftp.xemacs.org/pub/xemacs/ gespeichert. Während die Option '-nH' den Teil ftp.xemacs.org/ entfernen kann, bleiben Sie bei pub / xemacs hängen. Hier bietet sich '--cut-dirs' an. Dadurch wird die Anzahl der Remote-Verzeichniskomponenten von Wget nicht angezeigt. Hier sind einige Beispiele für die Funktionsweise der Option '--cut-dirs'.

Keine Optionen -> ftp.xemacs.org/pub/xemacs/ -nH -> pub / xemacs / -nH --cut-dirs = 1 -> xemacs / -nH --cut-dirs = 2 ->.

--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Wenn Sie nur die Verzeichnisstruktur entfernen möchten, ähnelt diese Option einer Kombination aus '-nd' und '-P'. Im Gegensatz zu '-nd' verliert '--cut-dirs' jedoch nicht mit Unterverzeichnissen - zum Beispiel mit '-nH --cut-dirs = 1' wird ein Beta / Unterverzeichnis in xemacs / beta as platziert man würde erwarten.

Natalie Ng
quelle
3
Einige Erklärungen wären toll.
Benoît Latinier
Was ist mit dem Herunterladen eines bestimmten Dateityps mit VisualWget ? Ist es möglich, nur MP3- Dateien in einem Verzeichnis und seinen Unterverzeichnissen in VisualWget herunterzuladen ?
Jason
3

wgetist eine unschätzbare Ressource und etwas, das ich selbst benutze. Manchmal enthält die Adresse jedoch Zeichen, wgetdie als Syntaxfehler identifiziert werden. Ich bin mir sicher, dass es eine Lösung dafür gibt, aber da diese Frage nicht speziell gestellt wurde, wgetdachte ich, ich würde eine Alternative für diejenigen Leute anbieten, die zweifellos auf diese Seite stoßen und nach einer schnellen Lösung suchen, ohne dass eine Lernkurve erforderlich ist.

Es gibt einige Browser-Erweiterungen, die dies tun können, aber die meisten erfordern die Installation von Download-Managern, die nicht immer kostenlos sind, in der Regel ein Dorn im Auge sind und viele Ressourcen verbrauchen. Hier ist einer, der keinen dieser Nachteile hat:

"Download Master" ist eine Erweiterung für Google Chrome, die sich hervorragend zum Herunterladen aus Verzeichnissen eignet. Sie können wählen, welche Dateitypen heruntergeladen werden sollen, oder das gesamte Verzeichnis herunterladen.

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

Eine aktuelle Funktionsliste und weitere Informationen finden Sie auf der Projektseite im Entwicklerblog:

http://monadownloadmaster.blogspot.com/

Moscarda
quelle
2

Keine Software oder Plugin erforderlich!

(nur verwendbar, wenn Sie kein rekursives Deptch benötigen)

Lesezeichen verwenden. Ziehen Sie diesen Link in Lesezeichen, bearbeiten Sie diesen Code und fügen Sie ihn ein:

(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(); } } })();

Gehen Sie auf die Seite (von der Sie Dateien herunterladen möchten) und klicken Sie auf das Lesezeichen.

T.Todua
quelle
1

Sie können lftp verwenden, das Schweizer Taschenmesser zum Herunterladen, wenn Sie größere Dateien haben, die Sie --use-pget-n=10dem Befehl hinzufügen können

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'
nwgat
quelle
Es hat perfekt und sehr schnell funktioniert. Dadurch wurde meine Internetverbindung zum Herunterladen von Tausenden kleiner Dateien voll ausgereizt. Sehr gut.
n13
-1

wget funktioniert im Allgemeinen auf diese Weise, aber einige Websites können Probleme haben und zu viele unnötige HTML-Dateien erstellen. Um diese Arbeit zu vereinfachen und unnötige Dateierstellung zu verhindern, teile ich mein getwebfolder-Skript, das das erste Linux-Skript ist, das ich für mich selbst geschrieben habe. Dieses Skript lädt den gesamten Inhalt eines als Parameter eingegebenen Webordners herunter.

Wenn Sie versuchen, einen geöffneten Webordner von wget herunterzuladen, der mehr als eine Datei enthält, lädt wget eine Datei mit dem Namen index.html herunter. Diese Datei enthält eine Dateiliste des Webordners. Mein Skript konvertiert in der Datei index.html geschriebene Dateinamen in Webadressen und lädt sie mit wget klar herunter.

Getestet unter Ubuntu 18.04 und Kali Linux, funktioniert es möglicherweise auch in anderen Distributionen.

Verwendung :

  • Extrahieren Sie die getwebfolder-Datei aus der unten angegebenen Zip-Datei

  • chmod +x getwebfolder (nur zum ersten Mal)

  • ./getwebfolder webfolder_URL

sowie ./getwebfolder http://example.com/example_folder/

Download-Link

Details im Blog

Byte Bitter
quelle