« la vuelta 09 21a etapa | トップページ | シャトルシェフ »

2009年9月24日 (木)

htmlsql

先日書いた JSports Rugby の bot だが何故か動く日と動かない日があるようで不安定だ。
とりあえずそれは置いておいて、今回ページの解析に htmlsql なるものを使ってみた。
jonasjohn.de: htmlSQL - a PHP class to query the web by an SQL like language

何ともユニークで、HTML自体に 'connect' して、div 要素などの中から where 文に一致するものを抽出してくる、という  php ライブラリである。SQL やってた人間なら直感的で使い勝手がいいと思うのだけど、3年ほど放置されているらしい。

ちゃんと動くのかいな?と思ったら動きましたよ。class とか id で制限して抜き出したり出来るので便利。ただ、同じ element が入れ子になってると最初に閉じた時点までしか取ってこないし、入れ子の中の要素を抽出できない模様。

<div class="bar">
  <div class="foo">
      hello, world.
  </div>
</div>

みたいになったソースに対して
select * from div where $class == "foo"
とやっても空の array が帰ってきてしまう。ので、$class == "bar" で取ってきた結果の text に string 型で connect しなおして…みたいなことが必要。
後、当然といえば当然なんだけど、UTF-8じゃないと日本語通らないのでそれ以外のソースは一旦エンコードを変える必要があるね。

何か定型のHTMLをちゃちゃっと処理したいときには便利なんじゃないでしょうか。XPath で invalid とか怒られたり、自分でうだうだ正規表現書くよりは。

|

« la vuelta 09 21a etapa | トップページ | シャトルシェフ »

てっく」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/232324/37750220

この記事へのトラックバック一覧です: htmlsql:

« la vuelta 09 21a etapa | トップページ | シャトルシェフ »