2010-10-17 17:55:07 +0000 2010-10-17 17:55:07 +0000
40
40

CURL zum Herunterladen eines Verzeichnisses

Ich versuche, ein vollständiges Website-Verzeichnis mit CURL herunterzuladen. Der folgende Befehl funktioniert nicht:

curl -LO http://example.com/

Es gibt einen Fehler zurück: curl: Remote file name has no length!.

Aber wenn ich dies tue: curl -LO http://example.com/someFile.type funktioniert es. Irgendeine Idee, wie ich alle Dateien im angegebenen Verzeichnis herunterladen kann? Danke!

Antworten (6)

40
40
40
2014-01-31 16:44:52 +0000

Funktioniert bei mir immer, auch ohne Parent und rekursiv, um nur das gewünschte Verzeichnis zu erhalten.

wget --no-parent -r http://WEBSITE.com/DIRECTORY
32
32
32
2010-10-17 19:59:25 +0000

HTTP hat nicht wirklich eine Vorstellung von Verzeichnissen. Die Schrägstriche außer den ersten drei (http://example.com/) haben keine besondere Bedeutung, außer in Bezug auf .. in relativen URLs. Wenn der Server also nicht einem bestimmten Format folgt, gibt es keine Möglichkeit, “alle Dateien im angegebenen Verzeichnis herunterzuladen”.

Wenn Sie die ganze Seite herunterladen wollen, ist es am besten, alle Links auf der Hauptseite rekursiv zu durchlaufen. Curl kann das nicht, aber wget schon. Das funktioniert, wenn die Website nicht zu dynamisch ist (insbesondere sieht wget keine Links, die durch Javascript-Code aufgebaut sind). Beginnen Sie mit wget -r http://example.com/, und schauen Sie unter “Recursive Retrieval Options” und “Recursive Accept/Reject Options” im wget-Handbuch nach weiteren relevanten Optionen (Rekursionstiefe, Ausschlusslisten, etc.).

Wenn die Website versucht, automatische Downloads zu blockieren, müssen Sie möglicherweise die Zeichenkette des Benutzeragenten (-U Mozilla) ändern und robots.txt ignorieren (erstellen Sie eine leere Datei example.com/robots.txt und verwenden Sie die Option -nc, damit wget nicht versucht, sie vom Server herunterzuladen).

17
17
17
2014-01-23 11:50:03 +0000

In diesem Fall ist curl NICHT das beste Werkzeug. Sie können wget mit dem Argument -r verwenden, etwa so:

wget -r http://example.com/

Dies ist die einfachste Form, und Sie können auch zusätzliche Argumente verwenden. Weitere Informationen finden Sie unter manpage (man wget).

5
5
5
2010-10-17 17:59:25 +0000

Dies ist nicht möglich. Es gibt keinen standardmäßigen, allgemein implementierten Weg für einen Webserver, den Inhalt eines Verzeichnisses an Sie zurückzugeben. Die meisten Server generieren einen HTML-Index eines Verzeichnisses, wenn sie entsprechend konfiguriert sind, aber diese Ausgabe ist weder standardmäßig noch garantiert. Sie können dieses HTML analysieren, aber bedenken Sie, dass sich das Format von Server zu Server ändert und nicht immer aktiviert ist.

2
2
2
2013-01-20 00:08:28 +0000

Sie können die Firefox-Erweiterung DownThemAll verwenden! Damit können Sie alle Dateien in einem Verzeichnis mit einem Klick herunterladen. Sie ist auch anpassbar und Sie können angeben, welche Dateitypen heruntergeladen werden sollen. Dies ist der einfachste Weg, den ich gefunden habe.

0
0
0
2014-01-23 12:44:17 +0000

Vielleicht finden Sie hier eine Verwendung für einen Website-Ripper, der alles herunterlädt und die Inhalte/internen Links für die lokale Verwendung modifiziert. Ein guter kann hier gefunden werden: http://www.httrack.com