[BlueLeaf1336]> PROBLEMS> MizuhoGetter>

MizuhoGetter > HTMLソースの解析

historyTOP

2004/11/06:作成

2004/11/06TOP

前回書いたとおり、取得したHTMLのソースコードを解析します。基本的に一定のルールにフォーマットにしたがって、データが配置されていると信じます。

上のリンクを参考に、正規表現を使って、取得したオリジナルのファイルを加工して、そこからは個別(7種類あるのでそれぞれべた書きのヘナチョコな方法で)解析していきます。

まずは、HTMLソースコードの加工です。手順は次のようにやろうと思います。

  1. HTMLタグを全部飛ばす。
  2. 行頭にある空白を全部飛ばす。(左トリム)
  3. 行末にある空白を全部飛ばす。(右トリム)
  4. 空行を全部飛ばす。

コレだけやっておけば、個別解析が楽になるんじゃないかと。それに、上記の加工処理はファイルのフォーマットに制限されずにやってしまえるので、先にやっておこうかと。

実際に使用した正規表現のパターンは次のようになりました。

処理パターン置換後の文字列
HTMLタグ除去'<!--(.|\n)*-->|<[^>]*>'''
空白・空行除去'\s*('#13#10')+\s*'#13#10
※Delphiの文字列の表記方法に従っています。

HTMLタグ除去については、第IV部〜テキスト編集を極める!! 正規表現についてにあったパターンをそのまま使用させていただきました。

空白・空行除去については、脳内妄想で試行錯誤して(少なくとも今回対象にするHTMLファイルに対しては)うまくいくことが確認できたものです。Visual Basic Scripting Edition Pattern プロパティによると、「\s」=「スペース、タブ、フォームフィードなどの任意の空白文字と一致します。」、「*」=「直前の文字と 0 回以上一致します。」、「+」=「直前の文字と 1 回以上一致します。」なので、日本語で書くと「連続する空白(なくても可)+改行(1回以上)+連続する空白(なくても可) => 改行1つ に置き換える」ということです。

単に複数の改行を1つの改行に置き換えるだけで、空白行が除去できるわけですが、ここでは右トリム・空行除去・左トリムを同時にやろうとしているだけです。※実際にはもうちょっとヘンなことをやってますが、主なものは上記2つです。

スクリーンショットTOP

20041106MizuhoGetter01.png前回作成済みの「NUMBERS当選番号取得」実行状況です。ただし、ボタンの置き場所を思いつかなかったため、ページコントロールを入れ子にしています。
「LOTO当選番号取得」は(何故か)画面の下に配置したタブを切り替えるとできます。同じく前回作成済みです。
実行結果は一切変わっていません。

20041106MizuhoGetter02.png今回作成したタグ除去・空白除去処理中の画面です。別に楽しくも何ともないです。

20041106MizuhoGetter03.png前処理完了結果。生のデータに比べて、圧倒的にサイズが減っています。かなり嬉しくなります。

20041106MizuhoGetter.zip(12,088bytes)※ソースコードと実行ファイル

「HTMLソースの解析」と名乗りながら、解析は一切していません。アホすぎるスクリーンショット貼り付けにより、またもや次のページへ繰り越しです。次回こそは、(少なくとも1つのフォーマットぐらい)解析したいところです。

EOFTOP