basyura's blog

あしたになったらほんきだす。

Twitter でクロール

ユーザ情報をクロールする場合は API で friends をたどっていけばよく、クローラを 2 つ動かして一日で 135000 ユーザを取得できた。

150回/1h のリクエスト制限
1回に 100 人分取得できる
クローラ 2 つ
ユーザに重複がない場合 → 150 * 100 * 24 * 2 = 720000
実際には → 135000 / 720000 * 100 = 18.75 % がユニークなユーザ

タイムゾーンが日本のユーザがフォローしているユーザなのでボットはもちろん、外国の人たちもかなりの数をクロールしてると思われる。
ただ、問題は何人をクロールするかではなくてクロールしたデータをどう加工するか。県別に集計しようとしているんだけど、さすがに 130000 ユーザを 1 プロセスで一人ずつ判定しながらテーブルに結果をインサートしていくのは非効率すぎる。最初はそれをやってたんだけど、1 万ユーザあたりで何分もかかるようになって終了。
レンタルサーバだから分散処理なんてできないしな・・・せいぜい cgi を複数キックして複数プロセスを立ち上げて処理させるぐらいか(apacheに迷惑)。かといってクラウドがどうのまでは行きたくない。ん〜どうしよう。
insertは 遅いから csv ファイルに落とした後に import するか、PStore あたりでダンプして置いとくとかを考えてる。