JavaでHTMLを扱うには?


FreeHtmlAnalyzerは、URLを入力してボタンを押すと、Webページのプレビュー表示や、ページに含まれているリンク・イメージファイルを一覧表示する。

Webサイトをブラウズするとき、そのページの情報を調べたいと思うことはないでしょうか。たとえば、そこで使われているイメージファイルをチェックしたい、とか、リンク先をチェックしたい、というようなことですね。このJavaプログラミングをご覧になっている人の中にはWeb開発に携わる人も少なくないでしょう。そうした方なら、参考になるサイトのソースコードを調べたりした経験があるはずです。

そこで、Webのページを調べて、そこにある要素を解析するようなツールを作成してみましょう。とりあえず今回作成してみるのは、HTMLのソースコードから<img>タグのsrcと<a>タグのhrefをすべて抜き出し表示するというものです。つまり、そのページに含まれているイメージファイルとリンクを調べるわけです。

FreeHtmlAnalyzerは、入力フィールドが1つとボタンが2つというシンプルなソフトウェアです。使い方は、入力フィールドに調べたいWebページのURLを入力し、ボタンを押すだけです。「load」ボタンを押すと、そのページを読み込んでウインドウの上部に表示します。JavaScriptやプラグインなどは動きませんが、一般的なHTMLのレイアウトは再現されるので、ページのプレビューとして利用できるでしょう。また「analyze」ボタンを押すと、そのWebページに含まれている<img>タグと<a>タグの中から、それぞれsrcとhrefの値を抜き出し、ウインドウ下部に一覧表示します。

今回のプログラムでは、HTMLについて2通りの利用の仕方をしています。1つは、そのままHTMLのソースコードをレイアウトして表示するというもの。もう1つは、HTMLを解析し、その中から必要な情報を取り出し処理するというものです。

「HTMLをレイアウト表示する」という方法については、多くの方は「あれか」とすぐにぴんと来たことでしょう。そう、Swingの「JEditorPane」を使えば、簡単にHTMLをレイアウト表示することができます。このJEditorPaneは、標準テキスト、リッチテキスト、HTMLソースコードをそれぞれレイアウトした状態で表示することができます。

Webサイトのページを読み込んで表示させるには、そのページのURLインスタンスを取得し、JEditorPaneの「setPage」で表示ページの設定を行うだけです。

html.setPage(url.getText());


たったこれだけで、urlというJTextFieldに入力されたURLのWebページをhtmlというJEditorPaneに表示させることができます。ただし、これはIOExceptionを発生させる場合がありますので例外処理を忘れないようにしましょう。