Stellen Sie sich vor, ich möchte, dass eine einfache Seitenkopie zur dauerhaften Aufbewahrung auf meine Festplatte heruntergeladen wird. Ich suche nicht nach einem tiefen rekursiven Abruf, sondern nur nach einer einzelnen Seite, sondern auch nach Ressourcen, die von dieser Seite geladen werden, um auch heruntergeladen zu werden.
Beispiel: https://www.tumblr.com/
Erwarten von:
- Die index.html
- Alle geladenen Bilder
- Alle geladenen JS-Dateien
- Alle geladenen CSS-Dateien
- Alle in die CSS-Datei geladenen Bilder
- Links für die Seitenressourcen, die lokalisiert sind, um mit den heruntergeladenen Kopien zu arbeiten (keine Webabhängigkeit)
Ich bin interessiert zu wissen, ob Sie mir helfen können, die beste Wget-Syntax oder ein anderes Tool zu finden, das dies ermöglicht. Die Tools, die ich ausprobiert habe, können die Bilder normalerweise nicht per CSS laden, sodass die Seite beim lokalen Laden nie richtig aussieht. Vielen Dank!
Tangentenlösung
Ich habe einen Weg gefunden, dies mit FireFox zu tun. Die Standardspeicherung ist fehlerhaft und es gibt ein Addon namens "Save Complete", das anscheinend gute Arbeit leisten kann. Sie können es jedoch nicht herunterladen, da es in der aktuellen FireFox-Version nicht unterstützt wird. Der Grund ist, dass es in dieses Addon gerollt wurde: "Mozilla Archive Format". Installieren Sie das. Wenn Sie dann Datei> "Seite speichern unter ..." verwenden, gibt es eine neue Option namens "Webseite, abgeschlossen", die im Wesentlichen das alte Addon ist, das die von FireFox verwendete Standardimplementierung behebt (was schrecklich ist). Dies ist keine WGET-Lösung, bietet jedoch eine praktikable Lösung.
EDIT: Ein weiteres lächerliches Problem für jeden, der diese Frage in Zukunft möglicherweise verfolgt und versucht, dies zu tun. Damit das Addon ordnungsgemäß funktioniert, müssen Sie Extras> Mozilla-Archivformat verwenden und die (schreckliche) Standardeinstellung "Erstellen Sie einen originalgetreuen Schnappschuss der Seite" in "Skripte und Quelle mit Save Complete beibehalten" ändern, da sonst das Addon alle leer macht Ihre Skriptdateien und ersetzen Sie sie durch den Text "/ * Skript durch Snapshot-Speichern entfernt * /".
Antworten:
wget -p -k http://ExampleSite.com
Mit -p erhalten Sie alle erforderlichen Elemente, um die Site korrekt anzuzeigen (CSS, Bilder usw.). Das -k ändert alle Links (einschließlich der für CSS und Bilder), damit Sie die Seite offline anzeigen können, wie sie online angezeigt wird.
Update: Dies ist spezifisch für Ihre Beispielseite: tumblr.com
Die Panne:
-H = Ermöglicht es wget, einen fremden Host zu überspannen. Erforderlich, da Tumblr seine Bilder nicht auf der Startseite unter derselben Adresse hat, verwenden sie Secure.assets.tumblr.com ( siehe Hinweis zum Ausschließen von Domains)
-N = greift nur auf Dateien zu, die neuer sind als das, was Sie derzeit haben, falls Sie im Laufe der Zeit dieselbe Seite erneut herunterladen
-k = Konvertiere deine Links, um sie offline richtig anzuzeigen
-p = greift nach allen erforderlichen Elementen, um sie korrekt anzuzeigen (CSS, Bilder usw.)
--exclude-Domains = Da die tumblr.com-Homepage einen Link für quantserve.com enthält und ich vermute, dass Sie dieses Zeug nicht wollen, müssen Sie es von Ihrem Wget-Download ausschließen. Hinweis : Dies ist eine ziemlich wichtige Option, die Sie mit -H verwenden sollten, denn wenn Sie zu einer Website gehen und diese mehrere Links für externe Hosts enthält (denken Sie an Werbetreibende und Analytics), werden Sie sich diese auch schnappen!
--no-check-certificate erforderlich, da tumblr https verwendet
-U ändert den Benutzeragenten. In diesem Fall nicht wirklich notwendig, da es den Standard-Wget-Benutzeragenten zulässt, aber ich weiß, dass einige Websites ihn blockieren werden. Ich habe es nur hier reingeworfen, falls Sie auf anderen Websites auf Probleme stoßen. In dem Beispiel-Snippet, das ich gegeben habe, erscheint es als Mozilla Firefox 6.02a
Endlich haben Sie die Seite: https://www.tumblr.com
quelle
Für die spezifische Site, die Sie erwähnt haben, und viele andere, die so codiert sind, dass sie nicht funktionieren, funktioniert wget (und curl) einfach nicht. Das Problem ist, dass einige der zum Rendern der Seite in einem Browser erforderlichen Asset-Links selbst über Javascript erstellt werden. Wget hat eine Funktionsanforderung anhängig, um Javascript auszuführen:
http://wget.addictivecode.org/FeatureSpecifications/JavaScript
Bis dahin sind Websites, die Asset-Links mit Javascript erstellen, mit wget nicht klonbar. Die einfachste Lösung besteht darin, ein Tool zu finden, das tatsächlich ein DOM erstellt und Javascript wie eine Browser-Engine analysiert (dh die von Ihnen erwähnte Firefox-Methode).
quelle
Sie können dies auch automatisch (oder programmgesteuert, wenn Sie codieren) tun, indem Sie mit wget einen Befehl über die Shell ausgeben:
Es lädt die Seite und die internen Dateien herunter und macht die Links lokal.
quelle
Ich denke, das wird alles packen, aber probieren Sie es aus und finden Sie es heraus.
quelle
$ ( man wget ):
quelle