人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで他サイトのHTMLを取得してデータ抽出するプログラムを作っています。
PHPプログラム上で取得したHTMLの表(<TABLE>)のセルの情報を読み取る簡単な方法は無いでしょうか?

やりたいことは複数のサイトにあるイベント情報等のカレンダーのセルの値を取得したいのです。
http://q.hatena.ne.jp/1145454292 を参考にHTMLを取得してタグを分割したり文字列検索したりしてある程度は取得できました。
ただHTMLのフォーマットが変わったりするとその都度修正が必要になりますし、見える表はそれなりなのですがHTMLを見ると余計なタグ(<TD>が多かったり)があるなどパターン化しにくいサイトもあります。

そこでHTMLを読み取るというよりは「人が見える形の表」として扱えないかと模索中です。例えば「表の縦○列目、横×列目」として取得するような方法です。
日付のセルと内容のセルの関連付け等はプログラムでやるのは当然としても「人が見える形の表」として扱えればある程度フォーマットが変わっても対応しやすいのかなと思います。

こういうことをやったことがある方や、「こうしたらできるかも?」というアイデアをお持ちの方は是非教えていただけないでしょうか?


●質問者: mstkwb
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTML PHP アイデア イベント カレンダー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●60ポイント

「表の縦○列目、横×列目」として取得するのでしたら、結局、TABLE構造の解析をしなければならないと思います。


ソースのHTMLの記述は正しいという前提で、厄介なのは colspan, rowspan の扱いですね。

Perlスクリプトになりますが、「table2csv.pl - tableタグをcsvに変換するPerlスクリプト」が参考になるでしょう。CSVに変換せず、配列のままもっておいた方が処理はしやすいでしょう。

◎質問者からの返答

ご回答ありがとうございます。

やはりTABLE構造の解析をするしかないですか・・・

colspan, rowspanが出てきたら完全にフォーマット変更なのでソース修正を覚悟するしかないですね。

ご紹介頂いたPerlのスクリプトならcolspan, rowspanにも対応しているようですし2次元配列にできるようなので、PHPに変換して取り込むよう検討したいと思います。


2 ● もすぴー
●10ポイント

スクレイピングですね。PHPでもライブラリは沢山ありますので、検索して好きなのを使ってみてはどうでしょうか。

配列に変換したり、XMLにしたりできるようなので、後はタグで絞ったり、解析したりできるでしょう。

htmlSQLなんてSQLのように検索できる面白いライブラリもあるようです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ