LoginSignup
7
6

More than 1 year has passed since last update.

TweepyとTwitter API V2を利用して100件以上のツイートを一度に取る方法

Last updated at Posted at 2022-05-04

わたくし、最近Tweetを収集してセンチメント分析をすることを楽しんでいる(https://twitter.com/tweet_mood_ai
)のですが、先日までに書いたコードがAPI v1.1を利用したものになっていたことに気づきました。
遠からず使えなくなるAPIを使ったままにするのは忍びないので書き直しました。

TweepyからAPI V2を利用してたくさんのTweetを取得するサンプルコードはあまり見かけなかったので、お役に立てば幸いです。

tweepy.Paginator

を利用すると、ページネーションの処理を書かなくていいのでらくちんです。
22/5/19:取得したい時間幅の指定(通常のAPIでは過去7日まで)ができるようにしました。

TweepyからTwitter API V2を利用してTweetを取得するコード

import tweepy
import pandas as pd
from datetime import datetime,timedelta

BAERER = '*************'   # Twitter Developerで取得したBearer Token
query = '吉野家 lang:ja -is:retweet'       # 検索するキーワード 検索条件指定してOK
limit = 500                # 取得したいツイート数

# 取得対象のツイートの時間幅を指定する この例では実行前の24時間としています。
# iso形式のUTC時間で指定しないと正しく時間指定ができない模様。
# 指定した時間幅に、limitで指定した件数以上のツイートがあってもlimit以上は取得しません。

now = datetime.now()
now = now.replace(minute=0, second=0, microsecond=0)
end_time_tweepy = str(now.isoformat())+'+09:00'
start_time = now - timedelta(days=1) 
start_time_tweepy = str(start_time.isoformat())+'+09:00'

client = tweepy.Client(BAERER)

df_tweet = pd.DataFrame()
for tweet in tweepy.Paginator(client.search_recent_tweets, query=query, start_time=start_time_twint, end_time=end_time_tweepy,
                              tweet_fields=['id','created_at','text','author_id','lang',], 
                              max_results=100).flatten(limit=limit):
    #print(tweet.text)
    df_tweet = pd.concat([df_tweet, pd.DataFrame([tweet.data])], ignore_index=True)

print(df_tweet)
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6