Wie verwende ich HTTrack, um gezippte Dateien von URLs mit akzentuierten Zeichen herunterzuladen?

1194
RandyS

Ich lade eine Website mit HTTrack mit fleckigen Ergebnissen herunter. Mehrere Verzeichnisse geben zwei oder mehr Versionen derselben HTML-Datei zurück. Diese Duplikate in einem bestimmten Verzeichnis können Folgendes enthalten:

  1. eine Datei mit dem Namen índice.html (beachten Sie den Akzent í), die Kauderwelsch im Browser anzeigt. Bei genauerer Betrachtung stellt sich heraus, dass dies ein .z-Archiv mit einer falschen Erweiterung ist, das die richtige HTML-Datei enthält
  2. eine Datei mit dem Namen índice.html.z, bei der es sich um ein Archiv handelt, das eine lesbare Version dieser Datei enthält
  3. eine Datei namens índice-2.html, eine gute Version der ursprünglichen índice.html, die im Browser einwandfrei lesbar ist
  4. Eine Datei mit dem Namen índice-2.html.z, bei der es sich um ein Archiv handelt, das die gleiche Datei enthält. Manchmal ist diese Datei jedoch etwas anders als die erste
  5. usw

Das HTTrack-Fehlerprotokoll zeigt Folgendes:

18:07:32 Fehler: "Fehler beim Dekomprimieren" (-1) unter link example.com/conversación/índice.html

Dies ist eine spanische Site, in der einige Verzeichnisse Akzente setzen, und die Dateien werden índice.html anstelle von index.html genannt. Dies lässt mich vermuten, dass HTTrack den Download durcheinander bringt, was die Akzente sind, aber ich kann es nicht beweisen, es sei denn, ich habe die englische Version derselben Website ohne Probleme heruntergeladen.

Zusammenfassend lässt sich sagen, dass das Problem entweder in den akzentuierten Zeichen in der URL oder in etwas anderem in Verbindung mit HTTracks Umgang mit gezippten HTML-Dateien liegt. Meine Hauptfrage bleibt jedoch die gleiche:

Ist dies ein Fehler in HTTrack oder erwartetes Verhalten und wie kann ich es umgehen, um die spanische Version der Website erfolgreich herunterzuladen?

1

1 Antwort auf die Frage

2
pyrocrasty

Sie können durch die Akzentzeichen verursacht werden, wie Sie vermuten. Dieser offene Fehler scheint verwandt zu sein.

Scheint durch chinesischen Text in .whtt Titel verursacht. In manchen Fällen führt der chinesische Text dazu, dass Winhttrack in dem Ordner, in dem sich die .whtt-Datei befindet, einige müllcodierte Ordner erstellt. In diesen Fällen befinden sich in den Downloadordnern noch .html.z-Dateien und manchmal .delayed oder leere Dateien und ein Fehler mit der Meldung "Fehler beim Dekomprimieren".

Als ich es mit dem einfachen ASCII-Projektnamen für die sam-URL erneut versuchte, war es erfolgreich.

Es scheint also ein Codierungsproblem zu sein (das in einigen früheren Versionen nicht existiert).

Vorschläge:

  • Versuchen Sie es mit der --utf8-conversionFlagge.
  • Wenn dies nicht funktioniert, versuchen Sie, eine frühere Version des Programms herunterzuladen (da der Bugreporter behauptet, dass einige frühere Versionen das Problem nicht aufwiesen).
  • Alternativ verwenden Sie wgetstattdessen. So etwas wie

    wget -mkp -np -nH www.example.com/path/to/toplevel/directory/index.html 

    kopiert rekursiv alle Seiten, auf index.htmldie sich das Verzeichnis befindet example.com/path/to/toplevel/directory/. Es enthält auch alle Dateien, die zur Unterstützung dieser Dateien erforderlich sind (CSS, JS usw.).

    Hinweis: Wenn wget die akzentuierten Dateinamen zerstört, verwenden Sie die Option

    --restrict-file-names=nocontrol 

nahezu duplizierte Dateien

HTTrack (oder wget) kann nichts dagegen tun, es sei denn, Sie können festlegen, welche Dateien Sie herunterladen sollen und welche nicht.

Wenn es ein einheitliches Namensschema gibt und Sie wissen, dass Sie keine Dateien mit einem bestimmten Namen und / oder Pfad wünschen, können Sie sie mit einem Filter ausschließen.

  • Mit HTTrack können Dateien mithilfe von Filtern ausgeschlossen werden . Dies sind Platzhaltermuster, denen beispielsweise vorangestellt -wird. Der Filter

    -www.example.com/path/to/toplevel/directory/subdir_with_dupes/*-2.html 

    schließt alle Dateien im Unterverzeichnis aus subdir_with_dupes/, deren Name auf endet -2.html. Es gibt verschiedene Platzhalter und Scanregeln, die in Filtern verwendet werden können. Siehe den Link oben oder die Manpage.

  • Wenn Sie wget verwenden, können Sie Verzeichnisse mit --exclude-directoriesund Dateinamensuffixen mit --reject(Platzhalter zulassen) ausschließen. Sie können auch einen Filter für reguläre Ausdrücke auf die gesamte URL anwenden --reject-regex. Es gibt viele andere Möglichkeiten. Sie erhalten eine Liste mit wget --helpund Erklärungen mit man wget.

Vielen Dank für diese ausführliche Antwort. Ich denke, hier gibt es zwei verschiedene Probleme. Das Problem mit falsch heruntergeladenen GZIP-Dateien kann in der Tat die Nicht-ASCII-Zeichen in Dateinamen oder Pfaden betreffen. Das lässt sich leicht beheben, indem Sie die Dateien einfach umbenennen und ggf. defekte Links korrigieren. Das Problem, dass separate indice.html und indice-2.html heruntergeladen werden und nahezu identisch sind, ist jedoch ein völlig anderes Thema. Mir ist aufgefallen, dass diese Dateien über andere Metadaten verfügen, hauptsächlich die rel = "canonical" - und rel = "shortlink" -Metadaten (Fortsetzung unten). RandyS vor 9 Jahren 0
Ich bin mir ziemlich sicher, dass diese Dinge spezifisch für Drupal sind. Das Entfernen dieses Metadatencodes reicht jedoch nicht aus, da eine dieser Indexdateien im gesamten Code über absolute URLs und die andere über relative URLs verfügt. Ich bin mit Drupal völlig unbekannt, daher bin ich mir nicht sicher, welche Version beibehalten werden sollte, um fehlerhafte Links so weit wie möglich zu vermeiden. Ich überlege, einen separaten Thread an der Drupal Stack Exchange zu erstellen, aber ich fürchte, er ist bei weitem nicht so besetzt wie Stack Overflow. RandyS vor 9 Jahren 0