Lassen Sie wget HTML-Links nach dem Download in relative konvertieren, wenn -k nicht angegeben wurde

31

Die -kOption (oder --convert-link) konvertiert Links auf Ihren Webseiten nach Abschluss des Downloads in relative Links, wie auf der Manpage angegeben:

Nachdem der Download abgeschlossen ist, konvertieren Sie die Links im Dokument, um sie für die lokale Anzeige geeignet zu machen. Dies betrifft nicht nur die sichtbaren Hyperlinks, sondern alle Teile des Dokuments, die auf externen Inhalt verweisen, z. B. eingebettete Bilder, Links zu Stylesheets, Hyperlinks zu Nicht-HTML-Inhalten usw.

Wenn ich es nicht angegeben habe -k, kann ich es wgetnach dem Herunterladen erneut ausführen und das Problem beheben. Wenn ja, welcher Befehl ist der richtige? Meine Vermutung ist, wget -c [previous options used] [url]und führen Sie es in demselben Arbeitsverzeichnis aus, in das die Datei heruntergeladen wurde.

Nathaniel
quelle
1
Sie könnten die Dateien nach dem Download sicherlich nachbearbeiten, aber ich weiß nicht, ob dies der wgetFall ist. Ihre Idee, es mit zu versuchen, -cist eine gute. Zeit zum Experimentieren!
Quack Quijote
Haben Sie ein Hilfsprogramm zur Hand, um die Links zu konvertieren? Laufen auf Windows, übrigens ...
Nathaniel
perl... kein vorgefertigtes Skript, aber wenn ich eine DIY-Lösung haben wollte, würde ich diese verwenden
quack quixote
Okay danke. Haben Sie Perl nicht installiert und es würde zu lange dauern, es zu bekommen. Zum Glück habe ich herausgefunden, wie ich wget dazu bringen kann, den Job zu erledigen. Ich habe eine Antwort gepostet.
Nathaniel
Übrigens ist ActivePerl als Windows-Perl-Port bekannt. Es ist ein ziemlich kleines Installationsprogramm, und ich bin mir ziemlich sicher, dass die meisten CPAN-Module damit funktionieren. activestate.com/activeperl
quack quixote

Antworten:

23

Ja, du kannst wgetes schaffen. Ich würde sagen verwenden wget -nc -k [previous options] [previous url]. -ncist no-clobber. Von der Manpage:

Wenn angegeben −nc, wird dieses Verhalten unterdrückt, und Wget lehnt das Herunterladen neuer Kopien der Datei ab.

Und die -kOption erledigt die Linkkonvertierung. Also beginnt wget, den Remote-Server zu durchsuchen, sieht alle Dateien, die Sie bereits haben, lehnt es ab, sie erneut herunterzuladen, und bearbeitet dann die HTML-Links zu relative, wenn es fertig ist. Nett.

Nathaniel
quelle
3
Nein, das funktioniert bei mir nicht. Er lädt die erste Datei (zB index.html) herunter, sieht also schon einen Downloadstopp vor. Wenn Sie rekursiv arbeiten möchten, müssen Sie die Zeitstempel-Option (-K) verwenden. Also muss wget anfordern, dass alle Header übereinstimmen, ob die Datei neuer ist oder nicht.
12
GNU Wget 1.13.3 basiert auf darwin11.1.0. Der Versuch, beide Optionen gleichzeitig zu verwenden, ergibtBoth --no-clobber and --convert-links were specified,only --convert-links will be used.
Ludovic Kuty
2
hat deine frage nicht ohne -k gestellt?
Barlop
8
Vgl. @ LudovicKutys Kommentar - ab Version 1.13 --no-clobbergeht das nicht mehr --convert-links. Weitere Informationen finden Sie unter http://savannah.gnu.org/bugs/?31781 .
David Moles
1
Falls es jemanden interessiert, habe ich ein Docker-Image für wget 1.12 erstellt: hub.docker.com/r/berezovskyi/wget1.12
berezovskyi