前提条件として,consumer_keyとかは各自で用意してください.あと,Python環境とtweepyのインストールも.
以下のスクリプトで,毎時ランダムにツイートを取得します.ランダムなので,言語や場所は様々.ツイートを取得した後で,
言語を指定してフィルターにかける感じです.ここらへんは参考サイト
Twitter APIをpythonで使うと〇〇ができる。 - どん底から這い上がるまでの記録
を見てください.
あとは,取得したツイートをcsv形式で保存します.というより,毎時上書きしていく感じです.何故csvファイルなのか?と思うかもしれませんが,
csvファイルだと後でpandasを用いて処理しやすいと思ったからです.
ちなみに,
指定するもの | 取得できる言語 |
---|---|
ja | 日本語 |
en | 英語 |
in | インド系? |
und | 絵文字などUnicodeErrorが起きるような文字 |
という感じで,これを指定することで,欲しい言語のツイートだけを取得できるわけですねー.あと,csvファイルはこのスクリプトが保存されているディレクトリに作成されますよー.
マークダウン記法で表を書くのに,どうやるのか忘れたので,以下を参考にしました.また,表の前後には改行を入れとかないと認識しないっぽいですねー.
Markdown記法 チートシート · GitHub
#-*- coding:utf-8 -*- import tweepy import datetime import csv from time import sleep class make_csv: def __init__(self,filename): self.filename=filename # csvファイルの作成とヘッダーの書き込み with open(self.filename,mode="w",encoding="utf-8") as file: writer=csv.writer(file) # writerオブジェクトを作成 header=[ "RT", "text", "tweet_id", "post_date", "retweet", "favorite", "user", "screen_name", "location", "reply_id", "language", "place" ] # ヘッダー writer.writerow(header) # ヘッダーを書き込む def make(self,tweet): # csvファイルの作成とヘッダーの書き込み with open(self.filename,mode="a",encoding="utf-8") as file: writer=csv.writer(file) # writerオブジェクトを作成 if 'RT' in tweet.text: RT=True else: RT=False text = str(tweet.text).replace('\n','') if text.find(','): text.replace(',',',') body=[ RT, text, tweet.id, tweet.created_at + datetime.timedelta(hours=+9), tweet.retweet_count, tweet.favorite_count, tweet.user.name, tweet.user.screen_name, tweet.user.location, tweet.in_reply_to_status_id, tweet.lang, tweet.place ] writer.writerow(body) # を書き込む class MyStreamingListener(tweepy.StreamListener): def on_status(self, status): if status.lang == 'ja': # statusが手に入れたツイート print(status.lang) mc_ja.make(status) elif status.lang == 'en': print(status.lang) mc_en.make(status) elif status.lang == 'und': print(status.lang) mc_und.make(status) else: print(status.lang) def on_error(self, status_code): if status_code == 420: return False consumer_key = 'Twitter API申請して取得したConsumer_key' consumer_secret = 'Twitter API申請して取得したConsumer_secret' access_token = 'Twitter API申請して取得したAccess_token' access_token_secret = 'Twitter API申請して取得したAccess_secret' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth, wait_on_rate_limit = True) listener = MyStreamingListener() stream = tweepy.Stream(auth, listener) now = datetime.datetime.now() file_name_ja = 'result_sample_from_{0}_ja.csv'.format(now.strftime('%Y-%m-%d_%H-%M')) mc_ja = make_csv(file_name_ja) file_name_en = 'result_sample_from_{0}_en.csv'.format(now.strftime('%Y-%m-%d_%H-%M')) mc_en = make_csv(file_name_en) file_name_und = 'result_sample_from_{0}_und.csv'.format(now.strftime('%Y-%m-%d_%H-%M')) mc_und = make_csv(file_name_und) while True: try: stream.sample() except KeyboardInterrupt: stream.disconnect() break except Exception as e: stream.disconnect() print(e)