DapperCamp #1

スクレーピングサービスであるDapperのカンファレンス in SF。
せっかく今西海岸にいるので参加してみた。無料だし。

http://www.dappercamp.com/

以下、カンファレンスの内容

Keynote

Mitch Kapor。Lotus Development Corp.のfounder。この人って有名?OpenKaporと関係あるの?
途中参加のためほとんど聞けず

How to Use Dapper

Dapper の使い方。以前使ったとき(たぶん1年以上前)よりはインターフェースは洗練されているけれども、基本は同じで、Dappするページを指定してクリックして要素を抜き出す。テキストフィールドはパラメータ化できる。皆が作ったDappをサーチできる。

質問で、HTML構造が変わったときにどう対処するか、というのがあったが、やっぱりユーザが再びDapperFactoryで再選択する必要があるそう(現時点では)。2つページを用意してそこからフェールオーバーさせるみたいな事はできるか(ここらへんは多分意訳)という質問にも、現時点ではそれはできない、という回答。

Dapper Feed Services (pre)

このセッションの本題に入る前に、なぜかちょっとしたデモがあって、LinkedInのContact情報をスクレープするというもの。これはちょっとすごい。

LinkedIn使っている人でも意識しないと知らないと思うけど、LinkedInのコンタクトリストページはDHTML(Ajaxでデータを取って来てあとから埋め込んでいる)になってるので、ただのHTMLスクレープでは肝心の情報が取れない。Dapperではそれができる。サーバサイドでブラウザのクローンを動かしており、それがちゃんとJavaScriptエンジン積んでいるので、ちゃんとAjaxリクエストが完了してDOMツリーができあがった時点でスクレープする。

ちなみにエンジンはRhinoMozillaのなんかでSpiderMonkeyつかってやってるのをkuさんが調べてた(ような記憶があるけど見つけられない)けど、実際にサービスでserverside javascript+DOM+Scrapingまでやってるのを初めて見た。まあ、単におれにとって初めて、ってだけの可能性は高い。

Dapper Feed Services

各種 mashup services の位置づけについて。

PipesはVisual Programming。Google Mashup EditorはMarkup Template。
ではdapperは何なのか?マッシュアップのcommon logic patternsである。

patternには以下のようなものがある

recursive
入力から終了信号を受け取るまで実行すようなもの。たとえばGoogle検索で、nextをどんどんクリックして行って、最終的にBig Result Setを得る(<= 何となくAutoPagerizeを想起させる)
foreach
入力となるリストのそれぞれにつき繰り返し、出力するもの。たとえばトップニュースの見出しが表示してあるページからそれぞれたどって本文を抜き出すなど。
merge
(foreachに似ている?)
caluculation field
複数値の計算結果(min, maxなど)、フォーマットを行う。スプレッドシートのフォーミュラに相当

その後、Dapper Feed Service内のレポジトリXMLの説明。フィールドとして定義するデータのパス値(XPath)や、データ型、URLのコンディションなどが格納されているのが分かる。

最後に、あまりつながりがないように感じたが、ウィジット出力の説明。表示しているページのデータをもとにしたウィジットを設定できる(contextual)。たとえばフォードに関連するページにウィジットを置いていたらそれをもとにDapperのFeedの入力にフォードというキーワードを設定して検索させるなどができるので、コンテクスト広告みたいなことが可能になる。ただし、Dapperに渡されるのはRefererで渡るURLのみであるため、表示するページからどの情報をとってくるかはDapperの設定をしなければならない(逆に言えばDappで定義できるなら何でもできる)

Transformer Builder

Dapper Feed Servicesが生成するDapper XMLをいろいろな形に変換する。HTML, RSSJSONはすでにあるが、Dapper ではそれをさらに拡張できる。PHPで実装する。クラスを拡張し、transform() メソッドに実際の変換結果を実装する。getDetails() 静的メソッドには設定画面のUIを設定。

詳細はここに
http://www.dapper.net/developers/transformers/


このあと途中所用があり抜け出してしまった。Hack Sessionらしかったのだけど、Dapperのブログを見る限り和気あいあいとやっている。


ちなみにカンファレンス会場は虹色の旗がはためく地域。GoogleMapsで地図はみていたのだけど、距離感を間違えた。会場もMosconeみたいなのを想像していたので大間違い。今日は駐車場代をケチって電車で市内まで来たのだけど、明日は車で来よう。