Die beste Methode zum programmatischen Speichern einer Webseite in einer statischen HTML-Datei

8

Je mehr Forschung ich mache, desto grimmiger werden die Aussichten.

Ich versuche, Flat Save oder Static zu speichern. Speichern Sie eine Webseite mit Python. Das bedeutet, dass alle Stile zu Inline-Eigenschaften zusammengeführt und alle Links auf absolute URLs geändert werden.

Ich habe fast jede kostenlose Conversion-Website, API und sogar Bibliotheken auf Github ausprobiert. Keiner ist so beeindruckend. Die beste Python-Implementierung, die ich für das Reduzieren von Stilen finden könnte, ist Ссылка . Ich habe das für Flask etwas angepasst, aber die generierte Datei ist nicht so toll. So sieht es aus:

Offensichtlich sollte es besser aussehen. So sollte es aussehen: Ссылка

Es scheint sich um einen endlosen Kampf zu handeln, der sich mit falsch formatiertem HTML, unbekannten CSS-Eigenschaften, Unicode-Fehlern usw. beschäftigt. Hat also jemand einen Vorschlag, wie man das besser machen könnte? Ich verstehe, dass ich zur Datei gehen kann - & gt; Speichern Sie in meinem lokalen Browser, aber wenn ich versuche, dies in Massen zu tun, und extrahieren Sie einen bestimmten XPath, der nicht wirklich realisierbar ist.

Es sieht so aus, als ob der Web-Clipper von Evernote iFrames verwendet, aber das scheint komplizierter zu sein, als ich denke. Aber zumindest sehen die Ausschnitte auf Evernote gut aus.

Ich bin gespannt, ob jemand Vorschläge hat.

    
Nick Woodhams 19.12.2012, 23:04
quelle

2 Antworten

2

Es scheint, dass Inline-Styles für Sie ein Deal-Breaker sind, aber wenn nicht, schlage ich vor, dass Sie sich Evernote Web Clipper noch einmal ansehen. Die Desktop-App verfügt über eine HTML-Exportfunktion für Webclips. Die Ausgabe ist etwas unordentlich, wie Sie es bei Inline-Styles erwarten würden, aber ich habe festgestellt, dass das Markup eine zuverlässige Darstellung der gespeicherten Seite ist.

Bei inline vs. externen Styles sehe ich für so etwas inline nicht, wenn Sie viele Seiten von verschiedenen Seiten verwenden, wo Klassennamen widersprüchliche Stilregeln haben würden.

Sie haben erwähnt, dass Web Clipper iFrames verwendet, aber ich habe nicht festgestellt, dass dies der Fall für die HTML-Ausgabe ist. Sie müssten wahrscheinlich die statische Seite als iFrame einbetten, wenn Sie auf einer anderen Website veröffentlichen (legal, nehme ich an), aber ansonsten sollte das kein Problem sein.

Eine gewisse Automatisierung würde sicherlich helfen, so dass Sie direkt vom Browser zur HTML-Ausgabe gehen und vielleicht die gespeicherten Bilder in einen einzigen Repo mit aktualisierten src-Links im HTML-Code verschieben könnten. Wenn du am Ende an so etwas arbeitest, wäre ich dankbar, es selbst auszuprobieren.

    
cantera 20.12.2012 01:04
quelle
2

Nachdem ich eine Weile weggelaufen bin, habe ich es geschafft, eine Ruby-Bibliothek zu installieren, die das CSS viel besser verflacht als alles, was ich bisher benutzt habe. Es ist die Bibliothek hinter der sehr langsamen Web-Schnittstelle hier Ссылка

Gott sei Dank haben sie die Quelle auf Github veröffentlicht, es sind die besten Hände runter. Ссылка

Es reduziert Stile, erstellt absolute URLs, arbeitet mit einer URL oder Zeichenfolge und kann sogar E-Mail-Vorlagen für einfachen Text erstellen. Sehr beeindruckt von dieser Bibliothek.

Aktualisierung November 2013

Ich habe letztendlich mein eigenes Bookmarklet geschrieben, das rein auf der Clientseite funktioniert. Es ist nur mit Webkit und FireFox kompatibel. Es rekursiv durch jeden Knoten und fügt Inline-Stile hinzu und sendet dann den reduzierten HTML-Code an die API clippy.in, um sie im Benutzer-Dashboard zu speichern.

Kundenseitiges Bookmarklet

    
Nick Woodhams 20.12.2012 03:45
quelle

Tags und Links