Twitter API v1.1でのリアルタイムツイート取得ができなくなっているので、この記事の方法は使えない。リアルタイムにツイートを取得するときは、PythonとTwitter API v2でリアルタイムにツイートを取得するのようにv2を使う。(2022.12.30追記)
TweepyはTwitter APIを利用してツイート検索などを行えるPythonライブラリ。バージョンが3から4になって仕様がけっこう変わっている。今回はTweepyの最新バージョン4でリアルタイムツイートを収集してみる。
環境
WSL2(Ubuntu20.04)。
$ lsb_release -dr Description: Ubuntu 20.04.3 LTS Release: 20.04 $ python3 -V Python 3.8.10
Twitter APIの利用に必要なAPIキーやトークンなどが未取得であれば、Twitterの開発者向けサイト(Developer Platform)で取得しておく。
Tweepyのインストール
Tweepyはpipでインストールできる。
$ pip3 install tweepy $ pip3 show tweepy Name: tweepy Version: 4.4.0 Summary: Twitter library for Python ...
Tweepyでリアルタイムにツイートを取得する
Tweepyバージョン3でリアルタイムにツイートを取得するには、StreamListenerを継承するクラスのインスタンスをStreamオブジェクトにわたすようにしていたが、バージョン4ではStreamListenerが廃止されている。TweepyドキュメントのFrequently Asked QuestionsにStreamListener廃止についての記載がある。
Tweepyバージョン4でリアルタイムにツイートを取得するには、Streamを継承するクラスを作成し、そのインスタンスを使う。以下のコードではリアルタイムに日本語ツイートのランダムサンプリングを表示する。
import tweepy
# Twitter APIの認証情報
# Twitterの開発者向けのページで取得したキーとトークンを使う
CONSUMER_KEY = 'Consumer Key'
CONSUMER_SECRET = 'Consumer Secret'
ACCESS_TOKEN = 'Access Token'
ACCESS_TOKEN_SECRET = 'Access Token Secret'
class TwStream(tweepy.Stream):
def on_status(self, status):
# status(APIで取得できるデータ)を受け取ったときにon_statusが実行される
print('-------------------------')
# スクリーンネームとツイートを表示
print(f'@{status.author.screen_name} {status.text}')
def main():
twstream = TwStream(
CONSUMER_KEY,
CONSUMER_SECRET,
ACCESS_TOKEN,
ACCESS_TOKEN_SECRET
)
# 日本語ツイートに限定してランダムサンプリングを取得
twstream.sample(languages=['ja'])
if __name__ == '__main__':
main()
0 件のコメント:
コメントを投稿