HTMLをDBみたいに使えるスゴイライブラリ『htmlSql』を CakePHPで使う
2010-07-11 01:41:29
APIやRSSなどを提供しているサイトは、情報を簡単に扱うことができますが、例えば Yahoo!の検索結果とか、mixiのニュースとか、あるサイトの一部を取り出したいことってよくあります。(とはいえ、著作権違反には注意
そんな時、PHPのライブラリである「htmlSql」を利用すると便利。このライブラリに、ファイルでもURLでも文字列でも、HTMLで作られたものなら何でも与えると、解析して取り出しやすくしてくれます。しかも、その取り出し方はSQL!
例えば、「id属性が’test’の p要素の内容を取り出したい」という場合には、次のようなSQLを使います。
SELECT text FROM p WHERE $id=="test"
超パワフル。ということで、これを CakePHPで利用するためのテクニック。
まずは、ダウンロードしたファイルの中から次のファイルを「app/vendors」フォルダにコピーします。この時、「htmlsql」などのディレクトリを作っていれておくと分かりやすいでしょう。
- htmlsql.class.php
- snoopy.class.php
続いて、コントローラーの中で次のようにして読み込みます。
App::import('Vendor', 'htmlsql', array('file' => 'htmlsql' . DS . 'htmlsql.class.php'));
App::import('Vendor', 'snoopy', array('file' => 'htmlsql' . DS . 'snoopy.class.php'));
あとは、通常のサンプル通りに使うことができます。例えばこんなプログラム。
$wsql = new htmlsql();
$wsql->connect('url', 'http://h2o-space.com/') or die($wsql->error);
$wsql->query('SELECT text FROM h1') or die($wsql->error);
$s = $wsql->fetch_array();
$db['name'] = $s[0]['text'];
簡単ですね。SQLの文法を少し覚えなければなりませんが、ごりごりとHTMLを解析するのを考えれば、相当楽。これは手放せないライブラリになりそうです。
※このエントリは builder メンバーにより投稿されたものです。朝日インタラクティブ および builder編集部の見解・意向を示すものではありません。
- H2O Space. Blog 最新エントリ
- ホワイトペーパー