2015/04/19

tweepyライブラリを利用する (カーソルを使ったフォロワー情報の取得)

フォロワー(ユーザ)情報を取得します。
ユーザIDだけなら1回で5000人分取得できますが、IDをだけでは誰が誰やら分かりません…
ユーザ情報として取得するには1回に200人分が限界です。

200人以上のフォロワーがいる場合は、何回かに分けて取得する必要がありますが、そのためにパラメータとしてcursorを指定する必要があります。
cursorは、-1で先頭ページを指します。

Twitterのカーソルについては、別途詳しく紹介しているサイトを見ていただくとして、tweepyには、カーソルを扱うためのオブジェクトがあります。

今回は、カーソルオブジェクトを使って、フォロワー情報を取得する方法を紹介します。

import tweepy
from tweepy.error import TweepError

CONSUMER_KEY    = '(コンシューマキー)'
CONSUMER_SECRET = '(コンシューマシークレット)'
ACCESSS_TOKEN   = '(アクセストークン)'
ACCESS_SECRET   = '(アクセストークン シークレット)'

if __name__ == '__main__':
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESSS_TOKEN, ACCESS_SECRET)
    api = tweepy.API(auth)

    try:
        pos = 1
        for user in tweepy.Cursor(api.followers, count=200, cursor=-1).items():
            print(str(pos) + ":" + user.screen_name + "(" + str(user.name) + ")")
            pos += 1

    except TweepError as e:
        print(e.reason)

Cursorオブジェクトは、第一引数に実行するメソッドを、第二引数以降にメソッドの引数を指定します。

ここでは、フォロワー情報の取得メソッドfollowersを第一引数に、followersメソッドの引数であるcountとcursorを第二引数以降に指定して、Cursorオブジェクトのitemsメソッドを実行します。
itemsメソッドはイテレータとして動作しますので、userオブジェクトのリストが取得されます。(16行目)

ただし、followersメソッドのリミットを超えるとTweepErrorが発生しますので、フォロワーさんが多い場合は、違う方法でフォロワー情報を取得する必要がありますね。