Wget erstellt keine Indexdatei des Verzeichnisses

Wget erstellt keine Indexdatei des Verzeichnisses

Ich versuche, die Site mit dem folgenden Befehl herunterzuladen:

wget -r -l 0 -p -k -m -e robots=off --restrict-file-names=nocontrol,unix http://example.com

Wenn es den Link findet, z. B. http://example.com/direction, erstellt es eine Datei auf der Festplatte./example.com/direction

Dann findet es zum Beispiel einige andere Dateien (Links) in 'Richtung', angenommenhttp://example.com/direction/11

Und wgetschreiben Sie die alte Datei ./example.com/directionmit etwas HTML neu, transformieren Sie sie in das Verzeichnis und schreiben Sie ./example.com/direction/11dort die neue Datei.

Wenn es darin eine neue Datei findet /direction/11, wird es 11diese ebenfalls neu schreiben und in das Verzeichnis konvertieren.

Also, es scheint, ich habe alle Verzeichnisindexdateien verloren.

Gibt es eine Lösung für das Problem in wget selbst?

Antwort1

Dies funktioniert möglicherweise nicht in jedem Fall, aber ich konnte dieses Problem mit einem etwas unerwarteten Tag lösen.

Aus dem wget 1.17.1-Handbuch:

‘-E’

‘--adjust-extension’

Wenn eine Datei vom Typ ‘application/xhtml+xml’oder ‘text/html’heruntergeladen wird und die URL nicht mit dem regulären Ausdruck endet ‘\.[Hh][Tt][Mm][Ll]?’, bewirkt diese Option, dass das Suffix ‘.html’an den lokalen Dateinamen angehängt wird.

Wenn wget in Ihrem Fall den Link findet http://example.com/direction, prüft es, ob die Seite HTML-formatiert ist. Wenn ja, wird sie auf der lokalen Festplatte als gespeichert /example.com/direction.html. Wenn es dann sieht http://example.com/direction/11, wird es sie auf der Festplatte als speichern /example.com/direction/11und somit die erste Datei nicht überschreiben. Vorausgesetzt, die tatsächliche Verzeichnisstruktur ist /example.com/direction/index.html, wird sie nicht genau mit der Remote-Verzeichnisstruktur übereinstimmen, aber zumindest werden keine Dateien fälschlicherweise überschrieben.

Antwort2

Eine Lösung dieses Problems nur mit Wget ist nahezu unmöglich. Lassen Sie mich zunächst versuchen, Ihnen das Problem zu erklären.

Zuerst versucht Wget, herunterzuladen http://site.com/direction. Wenn Wget eine Anfrage für diesen Pfad sendet, antwortet der Server mit den in verfügbaren Daten http://site/com/example/index.html. Zu diesem Zeitpunkt ist Wget jedoch nicht bewusst, dass die an ihn gesendeten Daten dem Pfad „example/index.html“ entsprechen. Wenn Wget nun eine andere Datei findet, http://site.com/example/11passiert dasselbe erneut. Allerdings muss es zuerst das Verzeichnis „example/“ erstellen und löscht dazu unbedingt die alte Datei. Meiner Meinung nach sollte Wget erkennen, ob es eine Datei durch ein Verzeichnis ersetzt, und die Datei als Indexdatei speichern. Aber das tut es derzeit nicht.

verwandte Informationen