h2ospace

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を解析するのを考えれば、相当楽。これは手放せないライブラリになりそうです。

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 新着記事
  • 特集
  • ブログ