Ich möchte Wget verwenden, um einzelne Webseiten (nicht rekursiv, nicht ganze Websites) als Referenz zu speichern. Ähnlich wie bei Firefox "Web Page, complete".
Mein erstes Problem ist: Ich kann Wget nicht dazu bringen, im CSS angegebene Hintergrundbilder zu speichern. Selbst wenn die Hintergrundbilddateien gespeichert würden, würde --convert-links meines Erachtens die Hintergrundbild-URLs in der CSS-Datei nicht so konvertieren, dass sie auf die lokal gespeicherten Hintergrundbilder verweisen. Firefox hat das gleiche Problem.
Mein zweites Problem ist: Wenn auf der Seite, die ich speichern möchte, Bilder vorhanden sind, die auf einem anderen Server gehostet sind (z. B. Anzeigen), werden diese nicht berücksichtigt. --span-hosts scheint das Problem mit der folgenden Zeile nicht zu lösen.
Ich benutze:
wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html
Antworten:
Von der Wget-Manpage :
Auch für den Fall
robots.txt
, dass Sie nicht zulassen, fügen Sie hinzu-e robots=off
quelle
wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows
[url]Der
wget
Befehl bietet die Option--mirror
, die dasselbe bewirkt wie:Sie können auch
-x
eine ganze Verzeichnishierarchie für die Site erstellen, einschließlich des Hostnamens.Möglicherweise können Sie dies nicht finden, wenn Sie nicht die neueste Version von verwenden
wget
.quelle
Es hört sich so an,
wget
als würde Firefox das CSS nicht nach Links durchsuchen, um diese Dateien in den Download einzubeziehen. Sie können diese Einschränkungen umgehen, indem Sie nach Möglichkeit suchen und die Verknüpfungsextraktion aus einem beliebigen CSS oder JavaScript in den heruntergeladenen Dateien per Skript ausführen, um eine Liste der fehlenden Dateien zu erstellen. Dann könnte ein zweiter Durchlaufwget
dieser Liste von Links alles erfassen, was übersehen wurde (verwenden Sie das-i
Flag, um eine Dateilisten-URL anzugeben).Wenn Sie Perl mögen, gibt es ein CSS :: Parser- Modul auf CPAN, mit dem Sie auf einfache Weise Links auf diese Weise extrahieren können.
Beachten Sie, dass
wget
nur bestimmte HTML- Markups (href
/src
) und CSS-Uris (url()
) analysiert werden , um zu bestimmen, welche Seitenanforderungen abgerufen werden müssen . Sie können Firefox-Addons wie DOM Inspector oder Firebug verwenden, um herauszufinden, ob die Bilder von Drittanbietern, die Sie nicht erhalten, über Javascript hinzugefügt werden. In diesem Fall müssen Sie auf ein Skript oder ein Firefox-Plugin zurückgreifen, um sie zu erhalten zu.quelle
Ich habe Webtography für einen ähnlichen Zweck erstellt: https://webjay.github.io/webtography/
Es verwendet Wget und verschiebt die Site in ein Repository auf Ihrem GitHub-Konto.
Ich benutze diese Argumente:
https://github.com/webjay/webtography/blob/master/lib/wget.js#L15-L26
quelle