【コード公開】【Python】TwitterのStream APIにてデータ収集





独学に限界を感じたなら...
とりあえず独学でプログラミング学習を始めたけど、右も左も分からずあなたの時間が無駄に終わるどころか挫折するかもしれません。

あなたが時間を無駄にした分を回収したいなら【Python】2022年最新!おすすめのオンラインプログラミングスクールをご確認ください!

※期間限定で学習ロードマップを記載しています!

Twiiter Stream APIについて

REST APIについては仕事上で利用することは多いですが、Streaming APIを利用することは初めてなので少しワクワクしてます!

さて、Streaming APIはざっくり言うとある条件でヒットさせた場合に、通知を待っているクライアントに対してプッシュ通知を一斉配信する仕組みです。プッシュ通知とは、サーバで発生したイベントをキッカケとして、クライアントからの要求なしに情報を送信することができる技術のことです。

 

Twitterでは以下のStreaming APIが用意されています。

● Public streams
Twitter上で流れる公開データのストリームのこと。特定のユーザやトピックをフォローしたり、データマイニングに適しています。

● User streams
ユーザ1人のストリームのこと。Twitterのシングルユーザビューで参照できるほぼ全てのデータを網羅する。

● Sites streams
ユーザストリームのマルチユーザ版。サイトストリームは、多くのユーザに代わってTwitterに接続しなければならないサーバを対象としている。

 

ぶっちゃけ記載していてうまく理解できていない私がいますが、そこは利用時にしっかり調査すればよし!!

と言うことで、今回はPublic streamsであるAPIを利用します。

 

2. プログラムの概要

 

今回のプログラムの流れです。

1. 必要なモジュールをインポート
2. Twitter APIを実行するために必要な変数用意
3. StreamListenerを継承するクラスを作成
4. Twitterオブジェクトの生成
5. Listenerクラスのインスタンス生成
6. 指定の検索ワードをフィルタして受信開始

 

上記の流れでプログラムを作成していきます。

 

必要なモジュールをインポート

 

import tweepy
from datetime import timedelta

 

1では、tweepyとtimedeltaをインポートします。timedeltaはツイートの時間を日本時間に直すために利用します。

 

Twitter APIを実行するために必要な変数用意

 

CK = 'xxxx' # Consumer Key
CS = 'xxxx' # Consumer Secret
AT = 'xxxx' # Access Token
AS = 'xxxx' # Accesss Token Secert

 

各種キーの値は、作成したtwitter開発者ページから取得したキーを代入します。
参考ページ:【Python】twitter APIを使用するための各種キーを取得する手順

 

StreamListenerを継承するクラスを作成

 

# StreamListenerを継承するクラスListener作成
class Listener(tweepy.StreamListener):
    def on_status(self, status):
        status.created_at += timedelta(hours=9)#世界標準時から日本時間に

        print('------------------------------')
        print(status.text)
        print("{name}({screen}) {created} via {src}\n".format(
                                                               name=status.author.name, screen=status.author.screen_name,
                                                               created=status.created_at, src=status.source))
        return True

    def on_error(self, status_code):
        print('エラー発生: ' + str(status_code))
        return True

    def on_timeout(self):
        print('Timeout...')
        return True

 

3では、StreamListenerを継承するクラスListenerを作成します。

 

Twitterオブジェクトの生成

 

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)

 

4では、OAuthHandlerインスタンス(auth)に、”Consumer Key”, “Consumer Secret”をセットします。
セットが終わったあとは、auth.set_access_tokenに、”Access Token”, “Accesss Token Secert”をセットします。

 

Listenerクラスのインスタンス生成

 

 # Listenerクラスのインスタンス
listener = Listener()

 

5では、listener変数にてListenerクラスのインスタンスを生成します。

 

指定の検索ワードをフィルタして受信開始

 

# 受信開始
stream = tweepy.Stream(auth, listener)
stream.filter(track = ["プログラミング"])# 指定の検索ワードでフィルタ

 

6では、ようやく受信開始となりますが、stream.filterを利用して、任意の単語を含む全てのツイートをストリーミングします。
trackパラメータは、ストリームする検索語の配列です。

 

★twitter-stream1.py★

 

# twitter-stream1.py
import tweepy
from datetime import timedelta

CK = 'xxxx' # Consumer Key
CS = 'xxxx' # Consumer Secret
AT = 'xxxx' # Access Token
AS = 'xxxx' # Accesss Token Secert

 # StreamListenerを継承するクラスListener作成
class Listener(tweepy.StreamListener):
    def on_status(self, status):
        status.created_at += timedelta(hours=9)#世界標準時から日本時間に

        print('------------------------------')
        print(status.text)
        print("{name}({screen}) {created} via {src}\n".format(
                                                               name=status.author.name, screen=status.author.screen_name,
                                                               created=status.created_at, src=status.source))
        return True

    def on_error(self, status_code):
        print('エラー発生: ' + str(status_code))
        return True

    def on_timeout(self):
        print('Timeout...')
        return True

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)

 # Listenerクラスのインスタンス
listener = Listener()
# 受信開始
stream = tweepy.Stream(auth, listener)
stream.filter(track = ["プログラミング"])# 指定の検索ワードでフィルタ

 

★出力結果★

 

みなさんも気になるワードでツイッターを分析してみてはいかがですか?^^

それでは!!

 

機械学習や分析の分野に興味があり、pythonを学びたいと思っている方は是非こちらもどうぞ↓

誰でも30日間で習得出来るpython学習法



ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、フリーランス活動経験を経て 2019年2月から起業し、今に至る。 自社サービス及び製品を開発、ブログ収入、クラウドソーシングなど、多方面で売り上げを立てている。