このページに書かれている内容はTwitter APIの有料化により無料では使用できなくなっています.
tweepyのget_follower_ids, get_friend_idsを使って特定のユーザーのフォロー・フォロワーの取得をします. 15分につき15回のリクエストをかけることができます.この制限を超えるとTooManyRequestsエラーが発生します.
APIキー アクセストークンを使ってAPIオブジェクトを作成します. 以下のコードをコピペしてAPIキー アクセストークンの部分だけ書き換えてください. APIキー アクセストークンを忘れた方はアクセストークン・API Keyについてをご覧ください.
# tweepy.__version__ == '4.12.1'
import tweepy
# アクセストークンなどの識別コードを入力します
access_token= "Access Tokenを入力してください"
access_secret = "Access Token Secretを入力してください"
api_key = "API Keyを入力してください"
api_key_secret = "API Key Secretを入力してください"
bearer_token = "Bearer Tokenを入力してください"
# APIオブジェクトを作成します
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
api.get_friend_ids()で自分がフォローしているユーザーのIDを取得することができます. ここで言うIDは@Twitterのような@の後に続くものではなく,アカウントごとに割り当てられている数字です. 一回で5000人分まで取得することができます. ここからはフォローしているアカウントの取得で話を進めますが,get_friend_idsをget_follower_idsに変えるだけでフォロワーを取得することができます. 以下のコードで自分のフォローしているアカウントのIDと名前を表示できます.
# フォローしているアカウントのIDを受け取る
friend_id_list = api.get_friend_ids()
# lookup_usersでユーザーの情報を受け取る
for i in range(0, len(friend_id_list), 100):
for user in api.lookup_users(user_id=friend_id_list[i:i+100]):
print("@"+user.screen_name,user.name)
user.statuses_countなどでアカウント名のほかにもツイート数やフォロー数を確認することができます.
詳しくはこちら
screen_name, user_idなどの引数を指定することで特定のユーザーがフォローしているアカウントの情報を取得することができます.
@TwitterのようなIDでアカウントを指定したい場合はscreen_nameを使います.
# フォローしているアカウントのIDを受け取る
friend_id_list = api.get_friend_ids(screen_name="Twitter")
# lookup_usersでユーザーの情報を受け取る
for i in range(0, len(friend_id_list), 100):
for user in api.lookup_users(user_id=friend_id_list[i:i+100]):
print("@"+user.screen_name,user.name)
get_friend_idsで得られたようなIDでアカウントを指定したい場合はuser_idを使います.
# フォローしているアカウントのIDを受け取る
friend_id_list = api.get_friend_ids(user_id=783214)
# lookup_usersでユーザーの情報を受け取る
for i in range(0, len(friend_id_list), 100):
for user in api.lookup_users(user_id=friend_id_list[i:i+100]):
print("@"+user.screen_name,user.name)
フォロー数,フォロワー数が5000人より多い場合は上記の方法で全てを取得することができません. 5000件より多い場合にはcursorを使います. アニメ銀河英雄伝説の公式Twitter(@ginei_anime)のフォロワー(1.6万人)をcursorを使って読み込んでみます. cursor=-1で先頭を指定し,get_follower_ids(screen_name="ginei_anime",cursor=-1)のようにすると,[[IDのリスト], (previous_cursor, next_cursor)]を返してくれます. next_cursorを利用し,get_follower_ids(screen_name="ginei_anime",cursor=next_cursor)とすると5000件以降を続きから取得することができます. これを繰り返すことで全てのフォロワーを取得することができます. 一番最後に到達するとnext_curosorは0になりますのでこれを終了条件とします.
follower_id_list = []
cursor = -1 # 最初の位置は-1で指定します
# すべて読み込み終わったら cursor=0 になります
while cursor!=0:
id_cursor = api.get_follower_ids(screen_name="ginei_anime",cursor=cursor)
follower_id_list += id_cursor[0] # フォロワーのIDをfollower_id_listに追加します
cursor = id_cursor[1][1] # [previous_cursor, next_cursor]の順に格納されています
print(len(follower_id_list))
# lookup_usersでユーザーの情報を受け取る
for i in range(0, len(follower_id_list), 100):
for user in api.lookup_users(user_id=follower_id_list[i:i+100]):
print("@"+user.screen_name,user.name)