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

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

Webページでwgetを試みると、htmlページが表示されます。関連付けられたHTMLなしでファイル内のテキストのみを検索できますか? (cプログラムを含む一部のHTMLページはhtmlタグを介してダウンロードされたため、これは私に必要でした。.cファイルを作成するには、ブラウザでそのページを開き、手動でテキストをコピーする必要がありました。)

答え1

wget文書のみが検索されます。文書がHTML形式の場合、必要なのは文書を解析した結果です。

たとえば、lynx -dump -nolist周囲にサルコがある場合に使用できます。

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

@Thorが述べたように、elinksオプションもあるので、この目的にも使用できます-dump-no-referencesリンクされたリストは省略する必要があります)。 -sigh-frames(MTFBWY)を使用して特定のサイトを通過するときに特に便利です。

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

答え2

これらの他のツールがインストールされておらず、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

答え3

他のツールを追加するだけです。私が好むのは、コンソールに似たブラウザw3mです。lynxシステムにすでにどの機能があるかを確認したい場合があります。

w3m -dump website.html

関連情報