Webページは HTML により記述されています。 HTML 文書は階層構造を持っており、DOM を使って表現することができます。
HTML 文書を解析(parse)して W3C の DOM の仕様に基づいた DOM tree を構築するライブラリがあれば、XML 文書と同じ扱い方をすることができます。 そのようなライブラリとして、The Validator.nu HTML Parser があります。
なお、JavaScript で動的に更新されるページの場合には、 The Validator.nu HTML Parser ではなく Selenium を使う必要があるかもしれません。
Eclipse で使用しているプロジェクトが Maven プロジェクトであるなら、 pom.xml に以下の記述を追加することで利用できるようになります。
<dependency> <groupId>nu.validator.htmlparser</groupId> <artifactId>htmlparser</artifactId> <version>1.4</version> </dependency>
Maven って何? という人で、新規プロジェクトで初めてもよいという人は、 以下のページを参照しましょう。
Maven を使わずに手動でライブラリを導入する人の手順は以下です。
サンプルプログラムを動作させるうえで、以下の NamespaceContextHTML クラスが必要です。 サンプルプログラムと同じパッケージに置いてください。
このクラスを用いると XPath で抽出ができますが、 HTML の要素は h: という接頭辞をつけて指定する必要があります。 /div/p/a ではなく /h:div/h:p/h:a と書きます。
DOM tree の扱い方は XML 文書の場合と同じです。 テキストの「XML文書とDOM」の項目を参照してください。
XPath を考える際、Google Chrome のデベロッパーツールが役に立ちます(メニューの「その他のツール」の中)。 対象のページを表示した状態でデベロッパーツールを起動し、 「Elements」から階層構造を確認して、 特定したい要素を右クリックし Copy -> Copy XPath でクリップボードに XPath がコピーされます。
遊戯王のサイトの商品情報のページを解析し、新着商品の情報を抽出するプログラムです。 以下のページを取得します。
https://www.yugioh-card.com/japan/products/
プロ野球の情報サイト nf3 - Baseball Data House の Webページを解析し、情報を抽出するプログラムです。 以下のページから選手の「カウント別成績」を取得します。
https://nf3.sakura.ne.jp/Central/S/f/1_stat.htm
音楽情報サイト Beatport の Webページを解析し、トラックの情報を抽出するプログラムです。 以下のページを取得します。
https://www.beatport.com/search/tracks?q=<query>&per-page=150
<query>の部分は検索語が入ります。