ウェブページの HTML ソース コードをファイルに出力する方法

ウェブページの HTML ソース コードをファイルに出力する方法

私の目標はHTMLソースをファイルに出力することです。翻訳元ターミナルからウェブを閲覧します。

ターミナルで次のコマンドを使用すると、w3m <url> -dumpプログラムは非対話型の方法で Web サイトを表示しますが、HTML ソースは表示しません。

でウェブサイトを開くとw3m <url>、端末にサイトが表示され、すると、プログラムはHTMLソースを表示します。これをスクリプト化しようとしましたが、成功しませんでした。コマンドライン引数が-dump_source役立つと思いましたが、私が得たのは人間が読むことができないコンテンツだけで、何を-dump_source返すはずだったのかわかりません。

これまで試してみたことは次のとおりです:

  • -T text/htmlターミナルで使用しました-dumpが、出力は変わりませんでした
  • -T text/plainターミナルでwith を使用して-dump_source、人間以外の出力がプレーンテキストに変換されることを期待しましたが、成功しませんでした (ターミナルで入力して w3m マニュアルを読んだ後でも、-T が何に使用されるのか理解できませんでしたman w3m)
  • 押すとw3mがウェブサイトを表示している間、ウェブページのコンテンツからHTMLソースコードに切り替えて、グーグルw3mプロセスに接続し、リダイレクトする標準入力そして標準出力私のファイル(input.txt、output.txt)には、input.txtに1つの、しかし成功しませんでした。テストプログラムでこれを実行したところ、期待どおりに動作しました。説明に従ってここと書くとls -l /proc/<w3m_pid>/fd、w3m_pid はターミナルで取得した w3m プロセス ID でps ax、3 つのファイル記述子があることがわかります。3 つ目の記述子をリダイレクトしようとすると、プログラムがクラッシュして次のように表示されます。エラーが発生しました: errorno=25
  • 標準I/Oをリダイレクトしてw3m <url> < input.txt > output.txtも機能しませんでした
  • W3Mはウェブ上での移動にキーバインディングを使用します。つまり、Enter キーを押す必要はありません。ターミナルは入力をバッファリングしていません。w3m プロセスにアタッチされた gdb を使用して削除しようとしましたp system ("/bin/stty cooked")が、w3m のキーバインドは変更されませんでした。

私の質問は、gdb で I/O をリダイレクトしても機能しないのはなぜか、また HTML ソース コードを取得するにはどうすればよいかということです。w3m には、不足している HTML ソース コードを出力するオプションがありますか。それとも、別のプログラムを使用する必要がありますか。

PS: 大学の宿題で HTML ソース コードが必要です。HTML ソース コードがあれば、Web を閲覧してページをファイルに出力するスクリプトを作成できます。その後、Flex でその出力を使用して、Web 上のものに関する統計情報を抽出します。たとえば、C 言語に関する質問に stack という単語が何回登場するかなどです。これは私のアイデアです。

ご提案があればぜひお願いします。

W3M バージョン:0.5.3+デビアン-15

GDB バージョン:7.7.1

Ubuntuバージョン:14.04

前もって感謝します!

答え1

なぜ使えないのですかcurl

curl web-address > file-source.

ソースコードを出力しますfile

このような

curl http://askubuntu.com/questions/822139/how-to-output-web-page-html-source-code-into-a-file > source-html

答え2

これについては既に回答されています:https://askubuntu.com/a/1273410/1124534

w3m -o accept_encoding=UTF-8 -dump_source google.com >file

関連情報