#(1)準備
tweepyをpipでインストール
twitter apiを登録
python3を使用
#(2)単純にキーワード100件取得
import tweepy
from datetime import timedelta #日本時間に直すため使う
#????には自身のコードを入力
#APIkey
CK="????????????????????"
#API key secret
CS="????????????????????"
#Access token
AT="????????????????????"
#Access token secret
AS="????????????????????"
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)
#1ツイートずつループ
#Mリーグをキーワード、100記事取得
for status in api.search(q='#Mリーグ', count=100):
#csv出力、timedeltaで日本時間に変更
with open('test.csv','a',encoding='utf-8') as f:
f.write('ツイートした時間:'+str(status.created_at + timedelta(hours=+9)) +'/'
+ 'ユーザー名:'+status.user.name + '/'
+ 'スクリーン名:'+status.user.screen_name + '/'
+ '本文:'+status.text
+'\n'
+ '-'*100
+'\n')
#(3)Cursorで500件取得
最大で200ツイートまでしか取得できないので
cursorを使う
以下の例はキーワードに'Mリーグ'として500件取得
import tweepy
from datetime import timedelta #日本時間に直すため使う
#????には自身のコードを入力
#APIkey
CK="????????????????????"
#API key secret
CS="????????????????????"
#Access token
AT="????????????????????"
#Access token secret
AS="????????????????????"
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)
#1ツイートずつループ
#Mリーグをキーワード、500記事取得
#enumerateを使ってインデックスも追加
for i,status in enumerate(tweepy.Cursor(api.search,q='#Mリーグ').items(500)):
#csv出力、timedeltaで日本時間に変更
with open('test2.csv','a',encoding='utf-8') as f:
f.write(str(i) + '/' + 'ツイートした時間:'+str(status.created_at + timedelta(hours=+9)) +'/'
+ 'ユーザー名:'+status.user.name + '/'
+ 'スクリーン名:'+status.user.screen_name + '/'
+ '本文:'+status.text
+'\n'
+ '-'*100
+'\n')
#(4)期間指定、レート制限表示
キーワードを、"KONAMI麻雀格闘倶楽部"として、2020-10-10の日で取得する
一度に大量のツイートを取ってこようとすると、エラーが出てプログラムが途中で止まってしまう可能性があるので、APIのインスタンス生成時のコードを以下のようにすることで途中停止を回避することができる
期間指定は1週間前までしか取得できない
import tweepy
from datetime import timedelta #日本時間に直すため使う
#????には自身のコードを入力
#APIkey
CK="????????????????????"
#API key secret
CS="????????????????????"
#Access token
AT="????????????????????"
#Access token secret
AS="????????????????????"
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
# wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか
# wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか
api = tweepy.API(auth,wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
#sinceとunteilで時間指定
#item()で数指定なし
#enumerateを使ってインデックスも追加
for i,status in enumerate(tweepy.Cursor(api.search,q='KONAMI麻雀格闘倶楽部',since='2020-10-10_00:00:00_JST',until='2020-10-10_23:59:59_JST').items()):
#csv出力、timedeltaで日本時間に変更
with open('test4.csv','a',encoding='utf-8') as f:
f.write(str(i) + '/' + 'ツイートした時間:'+str(status.created_at + timedelta(hours=+9)) +'/'
+ 'ユーザー名:'+status.user.name + '/'
+ 'スクリーン名:'+status.user.screen_name + '/'
+ '本文:'+status.text
+'\n'
+ '-'*100
+'\n')
#(5)ツイート数を集計
同じくキーワードを、"KONAMI麻雀格闘倶楽部"として、2020-10-10の日で全件取得する
import tweepy
from datetime import timedelta #日本時間に直すため使う
#????には自身のコードを入力
#APIkey
CK="????????????????????"
#API key secret
CS="????????????????????"
#Access token
AT="????????????????????"
#Access token secret
AS="????????????????????"
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
# wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか
# wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか
api = tweepy.API(auth,wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
#sinceとunteilで時間指定
#item()で数指定なし
#enumerateを使ってインデックスも追加
count = 0
for i,status in enumerate(tweepy.Cursor(api.search,q='KONAMI麻雀格闘倶楽部',since='2020-10-10_00:00:00_JST',until='2020-10-10_23:59:59_JST').items()):
count+=1
#csv出力、timedeltaで日本時間に変更
#ツイートしたカウントを保存
with open('test5.csv','a',encoding='utf-8') as f:
f.write(str(count))
#(6)for文で指定した期間のツイート数を集計
同じくキーワードを、"KONAMI麻雀格闘倶楽部"として、今回は2020-10-10から、2020-10-14までのツイート数を取得する
import tweepy
from datetime import timedelta #日本時間に直すため使う
#????には自身のコードを入力
#APIkey
CK="????????????????????"
#API key secret
CS="????????????????????"
#Access token
AT="????????????????????"
#Access token secret
AS="????????????????????"
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
# wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか
# wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか
api = tweepy.API(auth,wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
#rangeで指定した数だけ日にちを回す(range(5)なら、0,1,2,3,4)
for i in range(5):
count = 0
#日付を指定する(今回は2020-10-10から、2020-10-14まで)
the_day = datetime(2020, 10, 10+i)
#sinceとuntil用に加工する
str_t1 = the_day.strftime('%Y-%m-%d')+'_00:00:00_JST'
str_t2 = the_day.strftime('%Y-%m-%d')+'_23:59:59_JST'
for status in tweepy.Cursor(api.search,q='KONAMI麻雀格闘倶楽部',since = str_t1,until = str_t2).items():
count+=1
#ツイートしたカウントを保存
with open('data/test09.csv','a',encoding='utf-8') as f:
f.write(the_day.strftime('%Y-%m-%d') + ',' + str(count) + '\n')
#(6)for文で指定した期間のツイート数を集計(遡り)
日にちを指定するのではなく、データを回す当日(本日)から遡って集計する場合は以下の通り
import tweepy
from datetime import timedelta #日本時間に直すため使う
#????には自身のコードを入力
#APIkey
CK="????????????????????"
#API key secret
CS="????????????????????"
#Access token
AT="????????????????????"
#Access token secret
AS="????????????????????"
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
# wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか
# wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか
api = tweepy.API(auth,wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
#rangeで指定した数だけ日にちを回す(range(5)なら、0,1,2,3,4)
for i in range(5):
count = 0
#今日から遡って5日前までカウント
the_today = datetime.today()
the_beforeday = the_today - timedelta(days=i)
#sinceとuntil用に加工する
str_t1 = the_beforeday.strftime('%Y-%m-%d')+'_00:00:00_JST'
str_t2 = the_beforeday.strftime('%Y-%m-%d')+'_23:59:59_JST'
for status in tweepy.Cursor(api.search,q='KONAMI麻雀格闘倶楽部',since = str_t1,until = str_t2).items():
count+=1
#ツイートしたカウントを保存
with open('data/test09.csv','a',encoding='utf-8') as f:
f.write(the_day.strftime('%Y-%m-%d') + ',' + str(count) + '\n')