例のはてなブックマーク被お気に入り登録数調査はてブWiki版だけど、やっぱりなんとか自動化したいなあ、と思っていて。
HTMLを読み込んで解析する、そこが面倒くさいなと思っていろいろ調べていたらHTML::TagParserというモジュールが結構簡単に使えそうだったのでちょいちょいとツールを作ってみた。(要YAML::Syck)
動作はこんな感じ。
- タネとなるIDを初期ユーザーリストに指定してやる。*1
- ユーザーリストからIDを取ってくる。
- そのIDのお気に入り一覧をもらってくる。
- お気に入り一覧が初めて見るユーザーなら追加。初めてでなければお気に入り数を1増やす。
- ついでにそのIDの被fav数ももらってくる。
- 次のユーザーに進む。
昨日は試しに作って動かしては、うまく動かない*2ところを(間歇保存することで)おざなりに改善してみたりして。
2時くらいに自分をスタートにしたユーザー一覧が全部取得終わって、せっかくなのでwikiにアップしたらサイズ制限に引っかかったりして*3、そのへんを少し直してたらいい加減眠くなって、という状態でそのまま寝たら、id:santaro_y氏に朝イチで捕捉されてた感じ。
このソフト、別に隠すものでもないんだけど、これ公開してクロールしまくられるとやっぱり余計な負荷がかかるからまずいのかな?*4 *5
あと、自分からスタートすると6000ユーザー弱で全員閉じてしまう。この間聞いた限りでははてブユーザーは6万人いるらしいので、プライベートになっている人を考えても1割というのはちょっと少なくないか。ということで別のクラスタを発見すべく、人気エントリをクロールしてユーザー一覧をもらってこようかと考えているところ。