PHPプログラム上で取得したHTMLの表(<TABLE>)のセルの情報を読み取る簡単な方法は無いでしょうか?
やりたいことは複数のサイトにあるイベント情報等のカレンダーのセルの値を取得したいのです。
http://q.hatena.ne.jp/1145454292 を参考にHTMLを取得してタグを分割したり文字列検索したりしてある程度は取得できました。
ただHTMLのフォーマットが変わったりするとその都度修正が必要になりますし、見える表はそれなりなのですがHTMLを見ると余計なタグ(<TD>が多かったり)があるなどパターン化しにくいサイトもあります。
そこでHTMLを読み取るというよりは「人が見える形の表」として扱えないかと模索中です。例えば「表の縦○列目、横×列目」として取得するような方法です。
日付のセルと内容のセルの関連付け等はプログラムでやるのは当然としても「人が見える形の表」として扱えればある程度フォーマットが変わっても対応しやすいのかなと思います。
こういうことをやったことがある方や、「こうしたらできるかも?」というアイデアをお持ちの方は是非教えていただけないでしょうか?
「表の縦○列目、横×列目」として取得するのでしたら、結局、TABLE構造の解析をしなければならないと思います。
ソースのHTMLの記述は正しいという前提で、厄介なのは colspan, rowspan の扱いですね。
Perlスクリプトになりますが、「table2csv.pl - tableタグをcsvに変換するPerlスクリプト」が参考になるでしょう。CSVに変換せず、配列のままもっておいた方が処理はしやすいでしょう。
ご回答ありがとうございます。
やはりTABLE構造の解析をするしかないですか・・・
colspan, rowspanが出てきたら完全にフォーマット変更なのでソース修正を覚悟するしかないですね。
ご紹介頂いたPerlのスクリプトならcolspan, rowspanにも対応しているようですし2次元配列にできるようなので、PHPに変換して取り込むよう検討したいと思います。