トップページ -> PythonでTwitterのデータを取得する -> フォロー・フォロワーを確認する

フォロー・フォロワーを確認する

注意

このページに書かれている内容はTwitter APIの有料化により無料では使用できなくなっています.

tweepyのget_follower_ids, get_friend_idsを使って特定のユーザーのフォロー・フォロワーの取得をします. 15分につき15回のリクエストをかけることができます.この制限を超えるとTooManyRequestsエラーが発生します.

APIオブジェクトを作成する

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)
        

get_friend_idsで自分がフォローしているアカウントを取得する

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などでアカウント名のほかにもツイート数やフォロー数を確認することができます. 詳しくはこちら

get_friend_idsで特定のユーザーがフォローしているアカウントを取得する

screen_name, user_idなどの引数を指定することで特定のユーザーがフォローしているアカウントの情報を取得することができます.

  1. @abcd... でアカウントを指定する場合

  2. @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)
    

  3. IDでアカウントを指定する場合

  4. 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)
    

get_friend_ids, get_follower_idsで5000件より多く取得する方法

フォロー数,フォロワー数が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)

<- 前へ戻る 【目次に戻る】 次へ進む ->