被fav数を自動調査したいという思いはあるよね、ということで。

例のはてなブックマーク被お気に入り登録数調査はてブWiki版だけど、やっぱりなんとか自動化したいなあ、と思っていて。

HTMLを読み込んで解析する、そこが面倒くさいなと思っていろいろ調べていたらHTML::TagParserというモジュールが結構簡単に使えそうだったのでちょいちょいとツールを作ってみた。(要YAML::Syck)
動作はこんな感じ。

  1. タネとなるIDを初期ユーザーリストに指定してやる。*1
  2. ユーザーリストからIDを取ってくる。
  3. そのIDのお気に入り一覧をもらってくる。
  4. お気に入り一覧が初めて見るユーザーなら追加。初めてでなければお気に入り数を1増やす。
  5. ついでにそのIDの被fav数ももらってくる。
  6. 次のユーザーに進む。

昨日は試しに作って動かしては、うまく動かない*2ところを(間歇保存することで)おざなりに改善してみたりして。

2時くらいに自分をスタートにしたユーザー一覧が全部取得終わって、せっかくなのでwikiにアップしたらサイズ制限に引っかかったりして*3、そのへんを少し直してたらいい加減眠くなって、という状態でそのまま寝たら、id:santaro_y氏に朝イチで捕捉されてた感じ。

このソフト、別に隠すものでもないんだけど、これ公開してクロールしまくられるとやっぱり余計な負荷がかかるからまずいのかな?*4 *5

あと、自分からスタートすると6000ユーザー弱で全員閉じてしまう。この間聞いた限りでははてブユーザーは6万人いるらしいので、プライベートになっている人を考えても1割というのはちょっと少なくないか。ということで別のクラスタを発見すべく、人気エントリをクロールしてユーザー一覧をもらってこようかと考えているところ。

*1:ここは自分のIDをいれてみた

*2:なんかページ取得に失敗するとHTML::TagParserそのものがdieしてしまうのがよくわからなかった

*3:なので若旦那は以前20ユーザー以上だったのが、今は25ユーザーでアップしてある

*4:といっても一度に1URLしかアクセスしないんだけどね

*5:今は公開してます。こちらで