私の目標は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