このページに書かれている内容はTwitter APIの有料化により無料では使用できなくなっています.
tweepyのuser_timelineを使って特定のユーザーのツイートを取得します. 15分につき900回,24時間で10万回のリクエストをかけることができます.この制限を超えると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.user_timeline()で自分のツイートを取得することができます. 引数countで一回に取得するツイート件数を指定することができます.デフォルトは20件ですが,一回で最大200件まで取得することができます. 以下のコードで自分のツイートを200件取得し表示することができます.
# 自分のツイートを200件取得
tweets = api.user_timeline(count=200)
# ツイートを表示
for tweet in tweets:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at) # 協定世界時で表示されます(+9時間で日本時間になります)
print("===============")
tweet._jsonで受け取ったツイートに関する他の情報を確認することができます.
詳しくはこちら
screen_name, user_idなどの引数を指定することで特定のユーザーのツイートを取得することができます.
@TwitterのようなIDでアカウントを指定したい場合はscreen_nameを使います.
tweets = api.user_timeline(count=200,screen_name="Twitter")
# ツイートを表示
for tweet in tweets:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at)
print("===============")
アカウント固有の識別番号(ID)でアカウントを指定したい場合はuser_idを使います.
tweets = api.user_timeline(count=200,user_id=783214)
# ツイートを表示
for tweet in tweets:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at)
print("===============")
200件より多く取得したい場合はmax_idを指定し複数回 user_timelineを利用することで取得できます. max_idでIDを指定することで「指定したID以下のIDを持つツイート(指定したツイートとそれより古いツイート)」のみを返してくれるようになります. 最初に特定のユーザーのツイート数を調べ,最大で1000件までツイートを取得してみます. 見れるツイートがないのにツイート数が3になっているようなアカウントなどのように,実際のツイート数と表示がずれている場合にエラーになることがあるので取得できなかった場合は処理を止めるようにしています.
import math
# @abc... などの screen_name でユーザーを指定する
screen_name = "Twitter"
# ツイートを取得したいユーザーのツイート数を調べる
user = api.lookup_users(screen_name=[screen_name])
loop_count = min(5,math.ceil(user[0].statuses_count/200)) # ツイート件数を200で割って切り上げた数字が回すべきループの回数
tweet_list = []
max_id = None
while loop_count>0:
tweets = api.user_timeline(count=200,screen_name=screen_name,max_id=max_id)
# ツイートが1件も取得できなかった場合にエラーになるのを防ぐ
if len(tweets) == 0:
print("ツイートが取得できませんでした",loop_count)
loop_count = 0
else:
max_id = tweets[-1].id - 1 # 取得したツイートの最後のIDから1引いたものをmax_idにすれば続きから取得できる
loop_count -= 1
tweet_list += tweets # 取得したツイートをリストに追加する
for tweet in tweet_list:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at)
print("===============")
lookup_usersに関してはこちら
ホームTLとメンションに関しても似たような方法で取得することができます.
mentions_timeline: GET statuses/mentions_timeline | Docs | Twitter Developer Platform
home_timeline: GET statuses/home_timeline | Docs | Twitter Developer Platform