HTMLをDBみたいに使えるスゴイライブラリ『htmlSql』を CakePHPで使う – h2ospace – builder by ZDNet Japan

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

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中