こんにちは(@t_kun_kamakiri)(^^)
TwitterAPIを利用してTwitterのbotを作成しました。
4枚の画像付きのTwitterAPIで投稿! pic.twitter.com/uOSXikScJg
— 製造業ライフハック (@D7rWgT9tpBVjm8T) January 14, 2021
botくんの運用方法としては「製造業ブロガー」の方々と共有でGoogleスプレッドシートに投稿内容をまとめPythonを使って定期的に自動でツイートしてもらうという仕組みを作りました。
本記事のシリーズではPythonでTwitterAPIを利用してGoogleスプレッドシートから自動投稿までの軌跡をまとめていきます。
PythonでTwitterAPIを利用
- ツイート情報の取得←本記事の内容
- ツイート投稿
- 複数の画像を付きでツイート投稿
- Googleスプレッドシートとの連携
- Googleスプレッドシートから画像付きの投稿
- 既存のTwitterAPIで他のアカウントでも投稿
- トレンドの取得と分析
さらに「Twitterの投稿内容のデータ分析」や「誰でも使える分析ツールの自作」までできればワクワクしてきませんかね(^^)
では、本記事の内容です。
まずはTwitterAPIを使ってツイート情報を取得するところからやりましょう。
PythonでTwitterAPIを使って
- TwitterAPIの申請
- ツイート情報の取得
ここではPythonを使います。
Python3.7.6(Anaconda)
僕はデイトラPythonコースで勉強することで短期間で色々なことができるようになりました。↓こちらで学んだ内容をアレンジして記事を書いています(^^)
Twitterの自動投稿ツールまとめ
実は、Twitterの自動投稿ツールには以下ツールがあります。
Twitterの自動投稿をしたいという目的だけならば、こちらに詳しく解説が書かれていますのでこちらをお読みください。
Twitterアカウントを作成
既にTwitterアカウントをお持ちの方はここの解説は飛ばして次に進んでいただいても構いません。
認証を携帯で行った場合はPINコードというのが携帯のSMSに送られてくるかと思います。
別のアカウントでもTwitterAPIを使いたい場合はPINコードが必要になるのでメモして残しておきましょう。
Twitterの操作
Twitter操作をPythonで行うにあたってTwitter操作用のPythonライブラリを調べていたらかなり多くのライブラリが用意されていることがわかりました。
TwitterAPIの種類
あとはtwython-djangoというDjangoを使ったWebアプリ用のライブラリもあります。
あとDjangoもあります。
●twython-djangohttps://t.co/vIBngpvk1N
他にありますかな。
— カマキリ🐲@PythonとDjango勉強中 (@t_kun_kamakiri) January 14, 2021
twintに関してはTwitterAPIの申請をしなくてもツイート情報ができるようですね。
ただ、ツイート投稿となるとTwitterAPI申請を行わないといけないため、twintは今回は使用することはありません。
本記事のシリーズで使うライブラリは以下です。
- requests-oauthlib:PythonでOAuth認証を簡単に行うためのライブラリ。
requests: HTTPライブラリ
この2つを使う方法 - tweepy
TwitterAPIにはいくつか制限があるので確認しておきましょう。
こちらに早見表があります。以下ちょっとまとめると・・・
代表的な操作を簡単にまとめたのが次の表です。
回数は、15分の間で許可されている回数です。※制限がかかってしまった場合は15間待ってください。
操作 | 説明 | 回数 |
---|---|---|
ホームタイムライン | フォローしてるユーザーたちのツイートを読み込む。 | 15 |
ユーザータイムライン | 特定ユーザーのツイートを読み込む。 | 180 |
フォローリスト | フォローしてるユーザー一覧を読み込む。 | 15 |
フォロワーリスト | フォロワー一覧を読み込む。 | 15 |
いいね | いいねの一覧を読み込む。 | 15 |
トレンド | トレンドの一覧を読み込む。 | 15 |
検索 | ツイートをキーワード検索する。 | 180 |
回数については使用した感覚的にはあっているかなと思います。
要するにあまり派手に使わないようにってことです_(._.)_
さらにsearch/tweetsに関して検索できるのは1週間前のツイートまでです。
TwitterAPIの申請
Twitterの自動投稿にはTwitterAPIを使用しますので申請を行う必要があります。
要するにツイート情報を取得出来たり送ったりできたりするものってことでしょう(‘ω’)?
Twitterにログインした状態で、Deeloperサイトへアクセスします。
TwitterAPIの申請方法は既にネットにわかりやすい解説記事がありますので「TwitterAPI申請方法」などと検索して探してみてください。
こちらにTwitterAPI申請方法のわかりやすい解説記事を参考で貼っておきます。
ちなみに申請は英語で行います。
そんな方のためにお勧めなのがDeepLです。
Google翻訳よりはかなり良い精度で翻訳してくれます。
申請して不備がある場合はメールが飛んできますが、丁寧に返答をしていけばいずれ申請されますので英語でメールが来てもビビらずに返答していきましょう(^^)/


こちらはあくまで返答の例ですが、もっと詳しく書いてもOKです。
相手に対してどうしてTwitterAPIを使うのかという目的をしっかり伝えることが大事です。
向こうの立場で考えればTwitterAPIを使って悪用されたら困るのでしっかりと目的を聞いているということなんです。
TwitterAPI取得後
TwitterAPIが取得出来たら早速使ってみましょう。
では、TwitterAPIが取得出来たらPythonでTwitterの操作を練習でしてみましょう。
基本的なことがわかれば後は応用をするだけです。
Twitter上のツイート情報の取得
本記事のメインの話は、Pythonを使ってTwitter上のツイート情報の取得(TwitterAPIを使用)ですが、ツイート情報はブラウザからダウンロードすることもできますので紹介しておきます。
Twitter画面からダウンロード
インプレッション数、エンゲージメント数も取得したいですよね。
でも、インプレッション数、エンゲージメント数をチェックするにはエンタープライズ版のEngagement APIを利用する必要があるので今回は諦めました。
しかし、Twitterの画面からcsvファイルでデータ取得ができるので、ダウンロードしてデータ分析することはできます。
データの取得方法は以下の画像の手順です。


csvファイルをダウンロードしたら以下のPythonコードでcsvファイルを読み込み、データ分析を進めていけばよいです。
※今回はcsvファイルを読み込むところまでしか行っていません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import pandas as pd df = pd.read_csv('tweet_activity_metrics_D7rWgT9tpBVjm8T_20201228_20210112_ja.csv') df = pd.DataFrame(df) df = df[['ツイート本文', '時間', 'インプレッション', 'エンゲージメント', 'エンゲージメント率', 'リツイート', '返信', 'いいね', 'ユーザープロフィールクリック', 'URLクリック数', 'ハッシュタグクリック', '詳細クリック' ]] df_ = df[['インプレッション','エンゲージメント']].astype(float) df |
【実行結果】

このようにデータを取得できれば分析をすることができます。
Pythonを使ってTwitter上のツイート情報の取得(TwitterAPIを使用)
では、さっそくTwitterAPIを使っていくのですがここでの目標は以下となります。
では早速やっていきましょう。
ひとつひとつの動作がわかるようにjupyter labで行ったものを記載しておきます。
解説も載せておきますのでご参考ください。
全体のコードは最後に記載しています。
.envファイルを用意
Pythonコードを書く前に準備が必要です。
Twitterにログインした状態で、Deeloperサイトへアクセスします。

- コンシューマーキー (API key)
- コンシューマーシークレーット(API secret key)
- アクセストークン(Access token)
- アクセストークンシークレット(Access token secret)
をメモしておきます。
Pythonのコード内で認識させる必要があるのですが、コード内に直接べた書きするとセキュリティ的に良くないので、「.env」ファイルから読み込むようにします。
jupyter labで動作確認
動作確認は下記のようにjupyter labで行っています。
一緒にコードを書いて理解をしましょう。コードが理解できたら最後に全体のコードをまとめる流れです。
ここではrequests-oauthlibを使っています。
必要なライブラリは事前にターミナルでインストールしておきましょう。
AnacondaのPythonを使っている場合はpipコマンドで外部ライブラリをインストールするとファイルがぐちゃぐちゃになって壊れてしまう可能性があるため「conda insall ライブラリ名」とGoogle検索してインストール方法を調べてください。
今回必要、Anacondaでインストールされていないライブラリは以下なのでインストールしておきます。
また、モジュールのimportでエラーがでたら上記のように適宜インストールをしてください_(._.)_
全体のコード
こちらが全体のコードとなります。
以下のコードでツイート投稿内容、いいね数、RT数が取得でき表にまとめることができます。
【全体のコード】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import os import json from requests_oauthlib import OAuth1Session from dotenv import find_dotenv, load_dotenv import pandas as pd env_file = find_dotenv() load_dotenv(env_file) # .envファイルを探して読み込む # APIキーの設定 CONSUMER_KEY = os.environ.get('CONSUMER_KEY') CONSUMER_SECRET = os.environ.get('CONSUMER_SECRET') ACCESS_KEY = os.environ.get('ACCESS_KEY') ACCESS_KEY_SECRET = os.environ.get('ACCESS_KEY_SECRET') # OAuth1Sessionで認証処理 twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_KEY_SECRET) #エンドポイント url = 'https://api.twitter.com/1.1/statuses/user_timeline.json' # パラメータ設定(ツイート投稿数、アカウント名) params = { 'count':5, 'screen_name':'t_kun_kamakiri' } # res = twitter.get(url, params=params) # json形式に変換 timelines = json.loads(res.text) # 空のリスト型を準備 list_text = [] list_favorite_count = [] list_retweet_count = [] for data in timelines: list_text.append(data['text']) list_favorite_count.append(data['favorite_count']) list_retweet_count.append(data['retweet_count']) # 先ほど作ったデータごとにまとめたリストからDataframeの作成 df = pd.DataFrame({'text': list_text, 'fav_count': list_favorite_count, 'RT_count': list_retweet_count }) df |
【結果】

かなり丁寧に解説をしたので、説明が冗長だと感じた方は全体のコードを使ってください。
まとめ
PythonでTwitterAPIを利用してツイート情報を取得してみました。
Pythonの理解にはこちらの参考書で勉強しています。