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

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

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

答え1

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

たとえば、lynx -dump -nolist周囲に lynx がいる場合は、 を使用できます。

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

@Thor が述べたように、elinksこれもオプションを持っているので、これにも使用できます-dump(-no-referencesリンクのリストを省略する必要があります)。 -sigh- フレーム (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

関連情報