前にこんなツイートをした
ホクソエムからフォローをされている数で定義されるホクソエム数
— 無限猿(id:sucrose)@29月病 (@Scaled_Wurm) 2016年4月1日
連休で時間があったのでTwitter APIに慣れるついでに計算してみた
ホクソエムとは
よくわからないけど、Twitterで統計や機械学習をやってる人の一部が名乗っている
notchained.hatenablog.com
メンバーのリストは以下を参考にした
本題
というわけでホクソエムの人達からフォローされている数が多いユーザーを調べるためにTwitter APIを叩いてユーザーのフォロー情報を取ってくる
今回はPythonのライブラリのTweepyを使った
使い方は公式のドキュメントを読めばだいたいわかると思う(ドキュメントが古くて(?)載ってない関数とかあるので注意)
リストに入っているユーザー一覧はapi.list_members関数で取得できる
非公開のユーザーがいるので除外する必要がある点は注意
あるユーザーがフォローしているユーザーはapi.friends_ids関数で取得できる
ただしfriends_idsは15分に15回の制限があるらしいのでスリープを入れて間隔をあける必要がある
dev.twitter.com
これでフォロー情報が取得できるので、リストに入っているユーザーのうちの何人からフォローされているかをカウントできる
個々のユーザーの情報はapi.get_user関数で取ってこれる
get_userは15分間に180回しか叩けないので多い場合にはapi.lookup_users関数を使ったほうがよいかも
dev.twitter.com
dev.twitter.com
結果
被フォロー数上位50位ぐらいまでを載せとく
いわゆるデータサイエンス(?)っぽいユーザーのリストが得られた気がする
リストには26人載っていて、うち非公開が1人なので、最大の被フォロー数は25
1位で24なので、スクリプトにバグがあるかもしれないけど、それらしい結果が得られた
ソースコード
import tweepy import time import collections #APIのキーなど consumer_key = '' consumer_secret = '' access_token = '' access_token_secret = '' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) #https://twitter.com/teramonagi/lists/list/members hoxo_m_ids = [u.screen_name for u in tweepy.Cursor(api.list_members, 'teramonagi', 'list').items(100) if not u.protected] count = collections.Counter() for screen_name in hoxo_m_ids: count.update(tweepy.Cursor(api.friends_ids, screen_name).items(20000)) time.sleep(70) for k, v in count.most_common(100): user = api.get_user(user_id = k) print '|[https://twitter.com/{}:title]|{}|'.format(user.screen_name, v)