トップ » 研究開発 » HTMLパーサ

HTMLパーサ

(2007/05/18)

HTMLパーサ&ルールの使い方

このページでは、HTMLパーサ&ルールを用いたHTML文書からのデータ抽出を説明します。 本ソフトウェアのダウンロード、インストールに関しては、「HTMLパーサ&ルール」をご覧ください。

簡単スタートアップ

  1. 「対象URL」に解析したいHTMLページのURLまたはローカルパスを入れる
  2. 「3. 解析ルール」タブを開き、「新規ルール追加」ボタンを押す
  3. 「パス」を空欄、「種類」をリンク、「パターン」を空欄にし、「追加」ボタンを押す
  4. 「解析実行」ボタンを押す
1. 「対象URL」に解析したいHTMLページのURLまたはローカルパスを入れる
2. 「3. 解析ルール」タブを開き、「新規ルール追加」ボタンを押す
3. 「パス」を空欄、「種類」をリンク、「パターン」を空欄にし、「追加」ボタンを押す
4. 「解析実行」ボタンを押す

解析ルールの項目について

パス

任意のHTML要素の位置を、階層構造であらわしたものです。 要素の添え字は<n>、パスの区切りは_であらわします。 java.util.regex.Pattern における正規表現を用いて、一致するパターンを指定できます。
本アプリケーションでは<html>、<div>、<table>など、 特定のHTML要素に限定して階層抽出を行っているため、 そのほかのHTML要素は無視されています。

種類

取得するデータの種類をあらわします。テキスト、リンク、画像の3種類があります。

パターン

取得するデータの文字列パターンを正規表現であらわしたものです。 パスで対象ノードを特定できない場合に使います。

適用方法

繰り返し:最後のノードに到達するまで解析を続けます
1回のみ:末尾のルールが任意ノードに一致した時点で解析を終了します

HTMLパスの指定方法

HTMLタグの階層をあらわすパスは、要素の区切り文字に「_」、添え字に<n>を用います。 ここでは具体例として、下記のHTML文書を考えます。

<html><body>[A]
<table><tr>
<td>[B]</td>
<td>[C]</td>
</tr></table>
[D]</body></html>

A点からD点におけるパスは、下表のようになります。

パス
[A]HTML<0>_BODY<0>
[B]HTML<0>_BODY<0>_TABLE<0>_TR<0>_TD<0>
[C]HTML<0>_BODY<0>_TABLE<0>_TR<0>_TD<1>
[D]HTML<0>_BODY<0>

パスに正規表現を用いると、複数の点を一括して指定することができます。 また、通常はHTML文書の先頭要素から指定しなければならないところを、省略することができます。

パス
[B]、[C]HTML<0>_BODY<0>_TABLE<0>_TR<0>_TD<\d+>
.*TABLE<0>_TR<0>_TD<\d+>

正規表現を用いない場合でも、文書構造によっては複数の点をあらわすことがあります。 上記の例では、A点、D点は同じパスで表現されます。

パス
[A]、[D]HTML<0>_BODY<0>

もし、上記の例でA点、B点双方にテキストデータが現れる場合、 パスのみの条件で片方のデータを取り出すことはできなくなります。 このような場合は、パターン条件に出現テキストの条件を設定し、 抽出データを特定するようにします。

解析ルールのサンプル

1. 全てのリンクを抽出する
(適用方法:繰り返し)
RNo.パス種類パターン
1(空欄)リンク(空欄)
2. 全てのリンクとリンクテキストを抽出する
(適用方法:繰り返し)
RNo.パス種類パターン
1(空欄)リンク(空欄)
2.*A<\d+>テキスト(空欄)
3. テーブルの2番目の行すべてを抽出する
(適用方法:繰り返し)
RNo.パス種類パターン
1.*TABLE<\d+>_TR<1>_TD<\d+>テキスト(空欄)

前:HTMLパーサ&ルール

  1. HTML文書からのデータ抽出
  2. HTMLパーサ&ルール
  3. HTMLパーサ&ルールの使い方