Wie bekomme ich Text einer Seite mit wget ohne HTML?


17

Wenn ich wget auf einer Webseite versuche, erhalte ich die Seite als HTML. Ist es möglich, nur Text einer Datei ohne zugehöriges HTML abzurufen? (Dies ist für mich erforderlich, da einige der HTML-Seiten das Programm c enthalten, das mit HTML-Tags heruntergeladen wird. Ich muss es im Browser öffnen und den Text manuell kopieren, um eine C-Datei zu erstellen.)


1
Eigentlich ist es möglich, aber Sie müssen eine Funktion schreiben, die den Code von der Seite analysiert und als speichert .c. Es ist nicht schwer, aber es hängt von der Seitenstruktur ab. Wenn Sie einen Link angeben, wird Ihnen möglicherweise jemand mit genauem Code helfen. Ansonsten sedoder perlsind deine Freunde.
Ansturm

Antworten:


26

wgetruft nur das Dokument ab. Wenn das Dokument in HTML vorliegt, ist das gewünschte Ergebnis das Parsen des Dokuments.

Sie könnten zum Beispiel verwenden lynx -dump -nolist, wenn Sie Luchs in der Nähe haben.

lynxist ein leichter, einfacher Webbrowser mit der -dumpFunktion, mit der das Ergebnis des Parsing-Vorgangs ausgegeben wird.-nolistVermeidet die Liste der Links am Ende, die angezeigt wird, wenn die Seite Hyperlinks enthält.

Wie von @Thor erwähnt, elinkskann dies auch verwendet werden, da es auch eine -dumpOption hat (und hat-no-references die Liste der Links weglassen muss). Es kann besonders nützlich sein, wenn Sie mit -sigh- frames (MTFBWY) über eine Site gehen.

Beachten Sie auch, dass Sie das Ergebnis überprüfen müssen, es sei denn, es handelt sich bei der Seite wirklich nur um C-Code mit HTML-Tags, nur um sicherzustellen, dass nicht mehr als C-Code vorhanden ist.


5

Wenn Sie diese anderen Tools nicht installiert haben, nur wget, und die Seite keine Formatierung hat, nur einfachen Text und Links, z. B. Quellcode oder eine Liste von Dateien, können Sie den HTML-Code mit sed wie folgt entfernen:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

Dies verwendet wget, um den Quellcode der Seite in STDOUT abzulegen und sed, um alle <> Paare und alles dazwischen zu entfernen.

Anschließend können Sie die Ausgabe des Befehls sed mit> in die zu erstellende Datei umleiten:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

NB: Möglicherweise enthält die Datei ein zusätzliches Leerzeichen, das Sie nicht benötigen (z. B. werden die Zeilen um einige Spalten eingerückt).

Es ist möglicherweise am einfachsten, den Texteditor zu verwenden, um die Datei aufzuräumen (oder einen Quellformatierer, während Sie C-Quellcode herunterladen).

Wenn Sie in jeder Zeile der Datei dasselbe tun müssen, können Sie einen entsprechenden Befehl in den sed-Befehl einfügen (hier ein vorangestelltes Leerzeichen entfernen):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt

3

nur um ein weiteres Tool hinzuzufügen. Ich bevorzuge w3m, das ist lynxwie ein Konsolenbrowser. Möglicherweise möchten Sie überprüfen, was bereits auf Ihrem System verfügbar ist.

w3m -dump website.html
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.