7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Tweepyメモ

Posted at

#(1)準備
tweepyをpipでインストール
twitter apiを登録
python3を使用

#(2)単純にキーワード100件取得

.py
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件取得

.py
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週間前までしか取得できない

.py
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の日で全件取得する

.py
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までのツイート数を取得する

.py
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文で指定した期間のツイート数を集計(遡り)
日にちを指定するのではなく、データを回す当日(本日)から遡って集計する場合は以下の通り

.py
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')

7
5
1

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
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?