iPhoneアプリでスクレイピングしたい的なことを聞かれたので調べてみた。
調べるのは出来たが、MacがないしObjective-Cとか書けないので調べた結果だけです。
結果としてはlibxml2を使えばいいだけっぽい。
標準のライブラリにはSAXしかないらしい
XMLを扱うライブラリにはシーケンシャルにタグを調べていくSAXとゴリっと先に全部パースしてツリー構造に落とし込んでしまうDOMの二種類がある。
iPhone SDKのXMLクラスはNSXMLParseというクラス(ドキュメントはこれ)で
SAXなのでサクッとこのIDのタグを引っ張ってくるという処理が書きづらい(メモリを食わないっていうメリットはある)
そこで、簡単にぐぐった限りではlibxml2というのが利用できるようなので、それを使えばDOMで出来るので簡単に扱えるようだ。
HTMLとXMLの差
上記はXMLパーサーなので閉じタグがなかったりするとパースエラーで止まってしまうと思うので、HTMLが読めるかどうか調べてみた。
Module HTMLparser from libxml2とかドキュメントを眺めている限りではHTML用の実装がいるのでこれを叩けばよさそう。
DOMの例を見つけられなかったが、SAXの例
はあったので参考になるかも。