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


17

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


1
実際には可能ですが、ページのコードを解析してとして保存する関数を作成する必要があります.c。難しくはありませんが、ページ構造に依存します。あなたがリンクを提供するなら、誰かが正確なコードであなたを助けるかもしれません。そうでなければ、sedまたはperlあなたの友達です。
ラッシュ

回答:


26

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

たとえば、lynx -dump -nolistオオヤマネコがいる場合は、を使用できます。

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

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

また、ページが実際にHTMLタグを含むCコードだけである場合を除き、結果を確認する必要があります。Cコード以外のコードがないことを確認するためです。


5

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

NB:ファイルに不要な余分な空白があることがわかります(たとえば、行は数列インデントされています)

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

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

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

3

別のツールを追加するだけです。私が好むw3mである、lynxのようなコンソールブラウザ。システムですでに利用可能なものをチェックすることをお勧めします。

w3m -dump website.html
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.