In den 90er Jahren habe ich Teleport Pro verwendet .
Was wäre heutzutage der richtige Weg, um eine vollständige Kopie einer Website zu speichern?
(einschließlich Dateien von CDN / Schriftarten / Quellkarten / Medien)
Eine Möglichkeit wäre, eine einfache Node.js-App mit npm-Modulen wie request
oder zu schreiben cheerio
, aber ich möchte das Rad nicht neu erfinden.
(daher fragen)
Ich arbeite hauptsächlich am Mac, kann Windows verwenden, wenn sich die Software lohnt.
Sie können GNU wget verwenden :
brew install wget
)Um eine Offline-Kopie der Website zu erstellen (auch bekannt als Spiegeln), verwenden Sie
wget --mirror --page-requisites --convert-links http://stackexchange.com
--mirror
: Diese Option aktiviert Optionen, die zum Spiegeln geeignet sind. Diese Option schaltet Rekursion und Zeitstempel ein, stellt unendliche Rekursionstiefe ein und behält FTP-Verzeichnislisten bei. Es ist derzeit gleichbedeutend mit-r -N -l inf --no-remove-listing.
--page-requisites
: Diese Option bewirkt, dass Wget alle Dateien herunterlädt, die zur korrekten Anzeige einer bestimmten HTML-Seite erforderlich sind. Dazu gehören Dinge wie eingebettete Bilder, Sounds und referenzierte Stylesheets.--convert-links
: Konvertieren Sie nach Abschluss des Downloads die Links im Dokument, damit sie für die lokale Anzeige geeignet sind. Dies betrifft nicht nur die sichtbaren Hyperlinks, sondern jeden Teil des Dokuments, der auf externe Inhalte verweist, wie z. B. eingebettete Bilder, Links zu Stylesheets, Hyperlinks zu Nicht-HTML-Inhalten usw.Sie können HTTrack Website Copier verwenden :
+*.css
einzuschließen, führt dies manchmal dazu, dass die App versucht, das gesamte Internet herunterzuladen! Argh. Sie müssen komplexe Einschluss-/Ausschlussregeln angeben, um dies zu umgehen. Ich wünschte, sie hätten das nicht so schmerzhaft gemacht. 😒...was wäre der richtige Weg, um eine vollständige Kopie einer Website zu speichern?
Die kurze Antwort lautet, dass dies im Allgemeinen nicht möglich ist (im Sinne von „vollständig“), außer bei statischen HTML-Sites.
Die heutigen modernen "responsiven" Websites verlassen sich auf JS, das das DOM dynamisch mit AJAX aktualisiert, und wenn Sie nicht bereit sind, dieses JS auszuführen und das DOM erneut zu rendern, erhalten Sie nicht die vollständige Website.
Um zu verstehen, was ich meine, überlegen Sie sich, was es bedeuten würde, eine „vollständige Kopie“ von, sagen wir, maps.google.com zu speichern.
offline
Kopie. Aktuelle Momentaufnahme würde genügen.
Frank Dernoncourt
Mars Robertson
Frank Dernoncourt