スクレイピングをやったことがあるひとならばわかると思うけど、スクレイピングはとてもつまらない作業だ。
HTMLの中から抜き出したい部分を見つけて、その周辺にある特徴的な部分に着目して正規表現を書いたりして抜き出す。あるいはHTMLからDOMを生成して特定のクラスがついているエレメントを抜き出したりする。HTMLをXHTMLに整形、変換してXPathで抜き出す方法もある。どの方法もやることは単純で簡単なことだけれど、極めてめんどくさい。
そういうものだと思って数年間過ごしてきたけれど、去年の夏に出てきた Dapper: The Data Mapper は、そんな退屈な常識をモダーンなajaxでもって吹き飛ばした。もしDapperがどんなのなのか知らなかったら、ちょっと長くてはじめ退屈なんだけど デモムービー を見てみてください。
Dapperが教えてくれたことは、スクレイピングなんて、欲しいところをクリックするだけのしょーもない作業だということ。
いままで、スクレイプをするのに正規表現を書いたり、DOMをいじったり、よくわかんないXPathを勉強したりしていたのは、じつは簡単なことを難しい切り口で実現しようとしていたから必要だっただけだ。スクレイプするのに必要なことは、ブラウザを見てその中のどこを抜き出したいのかが認識できて、マウスでクリックすることだけだ。(実際にはDapperはxpathのような単純な方法でスクレイプしている訳ではなくて、それが裏目に出てうまくデータを抜き出せないことがけっこうあります)
Yahoo Pipes のときにもDapper同じことを感じた。あのツールはあんまりなんでもできたりはしないけれど、みんながぼんやり考えていたこと、UNIXのコマンドラインだったらgrepしてuniqしておしまい、みたいな簡単な作業が、XMLになっただけでどうしてこうも大変なの?なんとかならないの?ということに対して、ひとつの答えを出している。(そんなとがったコンセプトをjs+canvasというとがった方法で実装している)
あれを実際に使っていきたいとは思わないけれど、いままでどうすればできるのかわからなかった、簡単なことを簡単に実現するための方法を示してくれた。
スクレイピングをするときに正規表現を書いたりしないといけないのは、キカイにはどこが抜き出したいところなのかが理解できないからだ。ニンゲンだったら、どこが抜き出したいかなんてだれでもわかる。ページをスクレイプするために正規表現を書くよりも、正規表現を書けないひとがスクレイプできるようにするためのGUIフロントエンドを書いて、いままで正規表現が書けるニンゲンにしかできなかった部分を、知識なしでニンゲンならできるようにして、スクレイピングルールリポジトリを作っていくことが今の段階でかけていることだと感じています。
ひとりでやるとたいへんだけれど、みんなでやるとたいしたことない、というやつだと思います。
ほんとうは 進化する“Webスクレイピング”技術の世界 − @IT を読んで、その中で紹介されていた壊れたHTMLを適当に解釈してXMLにしてくれるhtreeに感動したっていう話が書きたかったのですが、もう終電に乗り遅れかねないので帰ります!
ウェブアプリケーション用テストツールのSelenium用のテストケースをブラウザでの操作を記録して生成する Selenium IDE も、おんなじ印象でした。Selenium IDE でテストケースを作るのは、それまでのやり方に比べると直感的で楽しいと感じたほど。
トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。
http://labs.gmo.jp/mt/mt-tb.cgi/102
comments