PythonでTwitter APIを扱いやすくしてくれるライブラリ”Tweepy”からTwitter API v2を利用して、さまざまな情報を取得する方法を解説します。本記事では接続のためにClientクラスから認証済インスタンスを得る方法と、実装例としてRecent Searchを実行する方法を紹介しています。
Developer Portalでのアプリ設定や接続に必要な要素の詳細(秘密鍵など)については
目次:

秘密鍵・接続情報を格納して読み取る
JSONで読み取る場合
各種キー情報をtwitter_key.jsonファイルにjson形式で保存します。
アプリファイルで、jsonファイルを読み込みます。
configモジュールを用いて読み取る場合
config.pyという名称のpythonファイルを作成します。
PATHはpythonモジュールのファイルパスを指定しておきますが、特に記述しなくてもOK。
アプリファイル内でtweepyライブラリとconfigモジュールをインポート。
Clientクラスからインスタンスを作成
tweepyの提供するClientクラスから、インスタンスを生成します。
Clientクラスから生成することで、接続認証済のインスタンスを得ることができます。
キー情報から認証済インスタンスを作成
各種認証情報を引数にとり、clientインスタンスを作成します。
基本的な”App”での利用の場合、Twitter API v2の場合にはBearer Tokenによる認証のみで足ります。
以下はすべての認証情報を読み込ませる場合。
JSONファイルからキー情報を格納する場合は下記。
configライブラリでconfig.pyに格納したキー情報を用いる場合は下記。
これで生成したclientに対して、さまざまなAPI操作が可能となりました。
Twitter API v2の機能”Recent Search”を実行
Twitter API v2の機能である、Recent Search(直近7日間から該当するツイートを取得)を呼び出してみます。
Tweepy公式Docsを見ると、Recent Searchはさまざまな引数を取ることができますが、必須となっている引数はquery(指定検索ワード)のみです。
ここでは、queryとmax_results(呼び出し上限数の指定)を引数に指定して、実行します。
max_resultsの値は10以上、100以下である必要があります。max_resultsを指定しない場合のデフォルト値は10です。
返ってきたclientの内容を出力すると、Response(data=…)というResponseオブジェクトが返ってくるのが分かります。
Responseオブジェクト
Responseオブジェクトのもつ属性
Responseオブジェクトは、以下の属性を持ちます。
- data
- includes
- errors
- meta
先程のRecent Searchを行った場合で成功した場合だと、返ってきたResponseオブジェクトはdata属性とmeta属性を含んでいることが、clientの内容から分かりました。
data属性は返ってきたデータの中身、meta属性ではそのデータ群のメタ属性(最新のツイートid, 合計取得数)などを持っています。
data属性の中身
clientを介してRecent Searchを呼び出したときの実行結果を変数に格納し、data属性の中身を見てみます。
すると、以下のようにそれぞれ1つの中身がid属性とtext属性をもつリストが返ってきました。
[<Tweet id=1xxxxxxx text='tweet contents 1'>, <Tweet id=1yyyyyyyyy text='@someone tweet contents 2 ……]
ツイートの中身だけ抽出して出力する
返ってきたリストで一番最初のツイートの、コンテンツ中身だけを取り出してみます。
これで中身が取り出せたので、for文でid情報とtext情報をかんたんに整形して出力してみます。
これで簡易的なツイート検索分析ができるようになりました。
もっと本格的な分析がしたい場合には、CSVに吐き出したりpandasを用いて分析するのが良いでしょう。
Tweepy公式ドキュメントの実装サンプルを参考にする
公式Tweepyドキュメントには、API v1.1 と API v2 それぞれにおける、いくつかの実装サンプルが用意されています。
場所が分かりにくいのですが、META > Examples にありました。
認証方法から、それぞれのメソッドにおける具体的な実装例まで。コメント付きで親切に説明されています。
Twitter API v2利用の参考になった動画
YouTubeでいくつか参考にした動画をご紹介します。(英語)
↑シンプルで分かりやすい解説です。
ほかに、 Twitter API V2 - Python Tweepy Automation - Search Twitter - YouTube の動画も、柔軟性をもたせるために関数化するなどの手法が参考になりました。
たとえばRecent Searchを関数化し、queryを引数で渡すことで、呼び出すたびに異なるキーワードでのRecent Search実行が可能となります。
この記事の気になった箇所を読み返す:
Category: