
万物は流転する。令和のヘラクレイトスことゆきとです。
今日はtwitter apiを使ってフォロワーのtwitter idを取得していきます。
*前回の記事の続きです。まだみてない方は前回の記事をみてください!と言いたいところではありますが、今回の記事だけをみても理解できるように書いていますので、前回の記事はみなくても大丈夫です笑
貼るだけ貼っておきます。
www.yukiyukiponsu.work
twitterから情報を取得する方法は2パターン (Beartokenを使うパターン, access tokenを使うパターン)があるのですが、後にいいねやリツートなどもしたいので今回はaccess tokenを使う方法でAPIを使用し、twitterから情報を取得します。
*twitterから情報の取得だけをしたい場合、Beartokenを使うパターンでもOKです。
詳しい2つの違いなどは下記のドキュメントを参照してください(英語なのは許してください...)
OAuth with the Twitter API | Docs | Twitter Developer
それでは作っていきましょう!
前提条件
もしまだtwitterのAPIキーを取得されてない方はこちらのサイトを参考にAPIキーを取得してください。(めちゃくちゃわかりやすくまとめてくれてます)
qiita.com
開発環境
実行結果

このような形でフォロワーのtwitter idを取得できます!
今回のソースコードではフォロワーが7万5千人以下の方であれば、一度でフォロワー全てのtwitter idを取得できます。
pprintとjsonは最初から入っていますが、requests_oauthlibはライブラリをインストールする必要があるので、インストールしてください。
ライブラリのインストールpip install requests_oauthlib
以下のソースコードはコピペでOKです!!(一部変えるところがあるので、ちゃんと最後まで読んでくださいね!)
ファイル名 : twitter_get_follower_twitter_id.py
from requests_oauthlib import OAuth1Session
import pprint
import json
try:
twitter = OAuth1Session("consumer_key", "consumer_secret", "access_token", "access_secret")
except:
print("twitter認証エラー")
get_tweet_info_url = "https://api.twitter.com/1.1/statuses/show.json?id=1110088233587662848"
req_tweet = twitter.get(get_tweet_info_url)
if req_tweet.status_code != 200:
print("指定したツイートの情報を取得できませんでした")
req_tweet_json = json.loads(req_tweet.text)
print("ツイートしたユーザのtwitter id : ", req_tweet_json['user']['id_str'])
print("ツイートしたユーザ名 : ", req_tweet_json['user']['name'])
print("ツイートしたユーザのフォロワー数 : ", req_tweet_json['user']['followers_count'])
twitter_user_id = req_tweet_json['user']['id_str']
follower_list = []
twitter_get_followers_id_url = "https://api.twitter.com/1.1/followers/ids.json?id=" + twitter_user_id
req_tweet = twitter.get(twitter_get_followers_id_url)
if req_tweet.status_code != 200:
print("このアカウントのフォロワーを取得できませんでした")
req_tweet_json = json.loads(req_tweet.text)
follower_list.extend(req_tweet_json['ids'])
print("取得したフォロワー数 0〜5000 : ", len(follower_list))
count = 1
api_max_get_followers_id_onetime = 5000
while req_tweet_json['next_cursor'] != 0:
twitter_get_follower_id_api_url = "https://api.twitter.com/1.1/followers/ids.json?id=" + twitter_user_id + "&cursor=" + req_tweet_json['next_cursor_str']
req_tweet = twitter.get(twitter_get_follower_id_api_url)
if req_tweet.status_code != 200:
print("このアカウントのフォロワーを取得できませんでした")
req_tweet_json = json.loads(req_tweet.text)
follower_list.extend(req_tweet_json['ids'])
print("フォロワー数 %d 〜 %d : %d" % (count*api_max_get_followers_id_onetime, (count+1)*api_max_get_followers_id_onetime, len(req_tweet_json['ids']) + count*api_max_get_followers_id_onetime))
count += 1
print("follower idリスト : ", follower_list)
print("合計フォロワー数 : ", len(follower_list))
このコードのAPIキーの部分(OAuth1..)を自分が取得したものに変えていただいて、コードを実行してください。
これで実行ができるはずなので、最初に示した実行結果と同じ結果になるかを確認してください。
無事表示されれば終了です!お疲れ様でした!
どうでしたか?少しでも参考になれば幸いです。
それではまた後日!!
参考
今回使用したtwitter apiのドキュメント
自分のtwitter id・名前・フォロワー数の取得 : GET users/show | Docs | Twitter Developer
フォロワーtwitter idの取得 : GET followers/ids | Docs | Twitter Developer