2004年08月06日
Template::Extractがビミョーに使えない
Spidering hacks―ウェブ情報ラクラク取得テクニック101選でも紹介されている、天才的発想のHTML解析モジュールTemplate::Extractですが、実はビミョーに使えないっぽい…のが判明しました。
というのも、解析対象と解析テンプレートが、完全に同じであったり或いは完全に別物であったりすれば、すぐにきちんとマッチする(或いはしない)のですが、対象とテンプレートがビミョーに似てて、ましてやFOREACHやワイルドカード表現使ってたりすると、「マッチしない」と言う結果を出すのにフリーズしたのかと思うほど異常に時間がかかるのです。
これはまあ、おそらく正規表現でマッチさせてるので、似たような構造がたくさんあるといろんな分割を試してみてマッチの可能性を探りつづけるループに入ってしまうからなんだろうと思いますが、それにしてもこれではサイトがほんのちょっとのマイナーチェンジすれば途端に高負荷状態になってしまい、使えません。
Templateを逆展開して解析に用いる、という発想は天才的なんだけど…ちょっと使えなかった。
実際、私もlivedoorトラックバックRSSで、最初はTemplate::Extractを使っていたのですが、先の各エントリ位置付きになった時に、修正作業中に何度も凍って凍って、原因を調べてみると解析部分で異様に時間がかかっていたのでした。
仕方ないので、HTML::TreeBuilderを使った解析に変更しています。
HTML::TreeBuilderも、XPath的な解析機能がつけばもう少し使い易いんだけどなあ…。
カレントノードの兄弟ノードに移るのに、一旦親に上がってまた対象を検索する、というやり方がちょっとウザい。
2つ上の兄ノード、とかできればいいのに。
Excerpt: 昨日のパッチですが、無事に取り込んでいただき、Template::Extract...
Weblog: blog.wore.ma.cx
Tracked: 2005年09月17日 14:34
![[ここギコ!]](http://kokogiko.net/logo.png)



・滝川クリステル?(DatingGenious)
・コンピュータは2進法が効率的でとかいう話(XAGary)
・コンピュータは2進法が効率的でとかいう話(とおりすがり)
・ジオメディア忘年会行ってきました(宋さんへ:kokogiko)
・コンピュータは2進法が効率的でとかいう話(kokogiko)
・コンピュータは2進法が効率的でとかいう話(まぐろ)
・コンピュータは2進法が効率的でとかいう話(名無し)
・コンピュータは2進法が効率的でとかいう話(dokasen)
・コンピュータは2進法が効率的でとかいう話(dokasen)