Tweepyで5,000人以上のユーザーを取得する

2017-01-13

Tweepy のリファレンスだけを見ると気づきにくいですが,twitter の API リファレンスも参照すると,friends や followers は最大 5,000 人までしか取得できないと書かれています.

巷のいくつかのフォローチェックアプリで相互なのにフォローされていないとか出ることがありますが,もしかしたらこの API の性質を見落としてるのかもしれませんね.

通常のソースコード

フォローしているアカウント,フォローされているアカウントは Tweepy を使えば次のように取得できます.

試しにフォローしているアカウント数を取得してみます.

import tweepy

consumer_key = 'consumer keyの値'
consumer_secret = 'consumer secretの値'
access_token = 'access tokenの値'
access_token_secret = 'access token secretの値'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

friends = api.friends_ids()
print(len(friends))

このとき,出力は 5,000 ユーザーが限界です.

カーソル機能

そういうこともあろうかと,カーソル機能というものがあります.

先ほどでは取得しきれなかった 5,000 を超える分も取得できます.

カーソルを使って取得されるデータはリスト形式になっていないので,カーソルで取得してリストに要素を追加し,最後にその数を出力することでフォロー数を出力してみます.

import tweepy

#省略

api = twitter.API(auth)

friends = []
for friend in tweepy.Cursor(api.friends_ids).items():
    friends.append(friend)

print(len(friends))

これで全て取得できます,やったね!

最後に

この機能は followers にも使えますし,デフォルトの上限がたった 20 アカウントになっている,リストに追加したアカウント数もすべて取得できます.

参考

tweepy で フォローした人をリストアップする | 3846masa's memo