web-dev-qa-db-ja.com

HTMLなしでwgetを使用してページのテキストを取得する方法は?

Webページでwgetを実行すると、HTMLとしてページが表示されます。関連するhtmlなしでファイルのテキストのみを取得することは可能ですか? (これは私が必要とするものです。cプログラムが含まれているHTMLページの一部がhtmlタグでダウンロードされています。ブラウザで開き、テキストを手動でコピーして.cファイルを作成する必要があります。)

17
Lunar Mushrooms

wgetはドキュメントのみを取得します。ドキュメントがHTMLの場合、必要なのはドキュメントを解析した結果です。

たとえば、lynxを使用している場合は、lynx -dump -nolistを使用できます。

lynxは、解析プロセスの結果を出力するために使用される-dump機能を備えた、軽量でシンプルなWebブラウザーです。 -nolistは、ページにハイパーリンクがある場合に表示されるリンクのリストの最後を避けます。

@Thorで述べたように、elinks-dumpオプションを備えているため(リンクのリストを省略するために-no-referencesがあるため)、これにも使用できます。 -sigh-フレーム(MTFBWY)を使用してサイトを横切る場合に特に便利です。

また、ページが実際にHTMLタグを含む単なるCコードでない限り、Cコード以外に何もないことを確認するために、結果を確認する必要があることに注意してください。

27
njsg

これらの他のツールがインストールされていない場合は、wgetのみを使用し、ページの書式設定はプレーンテキストとリンクのみです。ソースコードまたはファイルのリストでは、次のようにsedを使用してHTMLを取り除くことができます。

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

これは、wgetを使用してページのソースをSTDOUTにダンプし、sedを使用して<>ペアとその間のすべてを削除します。

次に、>を使用して、sedコマンドの出力を、作成するファイルにリダイレクトできます。

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

注:不要な空白がファイルに含まれている場合があります(たとえば、行が数列インデントされています)。

テキストエディターを使用してファイルを整理するのが最も簡単な場合があります(またはCソースコードをダウンロードするときのソースフォーマッター)。

ファイルのすべての行に対して同じ単純なことを行う必要がある場合は、sedコマンドにそれを実行するコマンドを含めることができます(ここでは、先頭のスペースを1つ削除します)。

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

別のツールを追加するだけです。 w3m、これはコンソールブラウザのようなlynxです。システムですでに利用可能なものを確認したい場合があります。

w3m -dump website.html
3
McPeppr