【悩み】
・Twitterの操作をPythonで自動化したい!できる限り無料で使いたい。
・TwitterのAPIを使いたいが高額…どうにかして無料で実現できない?
・スクレイピングなどを使って良い?その際のデメリットは?
こういった「悩み」に答えます。
【本記事の内容】
① TwitterAPIなしでPythonから操作可能?
➁ Twitterにおけるスクレイピング規約
➂ TwitterAPIとスクレイピングの比較
④ スクレイピングで可能なTwitterの操作一覧
⑤ TwitterAPIを使わない!に対するよくある質問(FAQ)
本記事に掲載した方法を実践したことで、Twitter APIなしでPythonからTwitterの様々な操作を自動化できました。例えば、下の動画のように、Twitterのフォロー操作をTwitter APIなしで自動化できました。
記事の前半では「Twitter APIを使わずにPythonからTwitterを操作する方法」と「その方法をTwitter(現X)は許しているかどうか?に対する調査結果」を解説します。
記事の後半では、「Twitter APIなしでPythonからTwitter操作を実現できた操作一覧(すぐ確認したい方はこちらをクリック)」をご紹介します。
この記事を読み終えることで、「Twitter APIを使うことなくPythonからX(旧Twitter)の様々な操作をできる」状態になります。
そもそも、「PythonとTwitterを連携することでどのようなメリットがあるのか?」や「Twitter APIを使う方法」を知りたい方は、以下の記事をご覧ください。図および具体的なプログラムを掲載し、分かりやすく解説しています。
>> PythonでTwitterと連携する2つの方法を解説
TwitterAPIなしでPythonから操作可能?
以下の順番でご紹介します。
【ご紹介事項】
・そもそもTwitterAPIとは?
・スクレイピングや内部通信を模倣すれば操作可能!
・そもそもスクレイピングとは?
・内部通信の模倣とは?
そもそもTwitterAPIとは?
Twitterには、「Twitter API」という仕組みがあり、この仕組みを使うことで、簡単にPythonなどのプログラミング言語からTwitterを操作できます。さらに詳しく知りたい方は、以下の公式サイトをご覧ください。
Twitter APIには以下の4種類があり、投稿以外の操作をPythonから行いたい場合、Basic以上を選択する必要があります。Basic以上だと月々費用が発生します。
項目 | Free | Basic | Pro | Enterprise |
料金 | 無料 | $100/月 | $5000/月 | 価格相談 |
できること | Twitter API v2を使ったツイート作成や削除のみ | Twitter API v2の全機能 | Twitter API v2の全機能 | Twitter API v2の全機能 |
各プランで操作可能な機能や単位時間当たりの制限回数などは、以下の公式サイトで確認できます。詳細を知りたい方は、以下をご覧ください。
>> Twitter API(Free)プランで使える機能と制限回数(公式サイト)
>> Twitter API(Basic)プランで使える機能と制限回数(公式サイト)
>> Twitter API(Pro)プランで使える機能と制限回数(公式サイト)
スクレイピングや内部通信を模倣すれば操作可能!
Twitter APIを使い様々な操作をPythonから実現したい場合、それなりに費用がかかります。そのため、目的を実現できるか分からない状態のまま、Twitter APIに課金することを躊躇う人が多いです。
そこで、目的を実現できるかを簡単かつ低費用で実現する方法が多数の人から求められており、その方法として以下の2つが挙げられます。
【Twitter APIなしで実現する方法】
・スクレイピング
・内部通信の模倣
そもそもスクレイピングとは?
スクレイピングの定義に関しては、以下の記事「スクレイピング(Scraping)とは?」箇所をご覧ください。
>> Yahoo検索をスクレイピング(Python)する方法
内部通信の模倣とは?
Twitter上である操作をした際に、Twitter内部では様々な通信が行われています。下図の「Twitterサーバーに処理を依頼」部分を解析し、Pythonなどのプログラミング言語を使い模倣するという方法です。
内部通信の模倣に関しては、スクレイピングより高度な技術力が求められます。そのため、以降では、より容易に実現できるスクレイピングに関して解説します。
Twitterにおけるスクレイピング規約
よく「Twitterでスクレイピングは禁止されていますか?」とご質問を受けます。結論から言いますと、Twitter運営元としては、同意がない状態でのTwitterスクレイピングを禁止しています(下図参照)。また、Twitter上では様々なスクレイピング対策も実施されています。
Twitter規約上には、スクレイピングが違法に値するなどは明記されていません。ただし、過度なスクレイピングによりTwitterの運用を妨害したとして裁判沙汰になったケースがあります。
>> Twitterの親会社であるX4人を提訴(Gigazine)
よって、「Pythonなどのプログラミング言語からTwitterを本格的に操作したい」や「運営サービスや開発製品からTwitterの操作をしたい」などの場合、スクレイピングではなくTwitter APIの利用を強く推奨します。
過度なスクレイピングによるTwitter運営の妨害は控えてください。最悪の場合、アカウント凍結だけではなく、裁判で訴えられる可能性もあります。
TwitterAPIとスクレイピングの比較
以下の順番でスクレイピングの特徴を解説します。
【ご紹介事項】
・スクレイピングのメリット:申請不要・無料・広範囲
・スクレイピングのデメリット:凍結・低速・要保守
スクレイピングのメリット:申請不要・無料・広範囲
Twitter APIと比較した際のスクレイピングのメリットとして、以下が挙げられます。
・申請なしですぐに使える。Twitter APIはTwitter Developerに登録が必要
・課金することなく無料でTwitterの様々な操作を自動化が可能
・Twitter APIで提供されていない操作も自動化が可能
(本記事執筆時点ではトレンド取得APIがTwitter APIでは未提供)
スクレイピングのデメリット:凍結・低速・要保守
Twitter APIと比較した際のスクレイピングのデメリットとして、以下が挙げられます。
・過度なスクレイピングによりアカウント凍結や訴えられる可能性あり
・GUI操作を介すためTwitter APIに比べて処理速度が低速
・TwitterのUI(見た目)が変わった際に作成スクリプトの修正が必要
上記のメリットとデメリットを踏まえた上で、スクレイピングを採用するかどうかをご自身で決めてください。
また、上記で言及した「過度」の具体的な数字についてですが、「スクレイピングで可能なTwitterの操作一覧」に掲載した各記事で記載しています。詳しく知りたい方は、ぜひお読みください。
スクレイピングで可能なTwitterの操作一覧
スクレイピングを使うことで、以下のTwitter操作をPythonから実現できます。
操作名 | 詳細 | 実現方法の解説記事 |
フォロー【プログラムはこちら】 | 特定のキーワードを含む投稿をしたアカウントをフォロー | 解説:Pythonを使い無料でTwitterのフォローを自動化する方法 |
リプライ【プログラムはこちら】 | メンション付きツイートに対して定型リプライ | 解説:Pythonを使い無料でTwitterリプライを自動化する方法 |
DM送信【プログラムはこちら】 | アカウント指定または一括でダイレクトメッセージを送信 | 解説:Pythonを使い無料でTwitterのDM送信を自動化する方法 |
ブックマークのエクスポート【プログラムはこちら】 | ブックマークした投稿をファイルへエクスポート | 解説:PythonでTwitterのブックマークを無料でエクスポート |
ツイート取得(ポスト取得)【プログラムはこちら】 | 検索式を満たす投稿を取得しファイルへ保存 | 解説:Pythonを使い無料でTwitterのツイートを取得する方法 |
リツイート(リポスト)【プログラムはこちら】 | 指定した投稿のリツイート(リポスト)や引用ツイート | 解説:Pythonを使い無料でTwitterのリツイートを自動化する方法 |
トレンド取得【プログラムはこちら】 | 設定された地域のトレンドを取得しファイルへ出力 | 解説:Pythonを使い無料でTwitterのトレンドを取得する方法 |
いいね【プログラムはこちら】 | 検索式を満たす投稿に対していいねを実施 | 解説:Pythonを使い無料でTwitterのいいねを自動化する方法 |
いいね欄・検索欄・タイムラインから画像保存【プログラムはこちら】 | 表示された画像付きツイートの画像を取得し保存 | 解説:Pythonを使い無料でTwitterの画像を保存する方法 |
ツイートごとのエンゲージメント数を取得【プログラムはこちら】 | 検索欄に表示された各ツイートのいいね数・リプライ数・リポスト数・表示回数・ブックマーク数を取得しファイルへ保存 | 解説:無料でPythonからいいね数などのエンゲージメントを取得 |
ツイートに動画が埋め込まれているかを確認【プログラムはこちら】 | 検索欄等に表示されたツイートに動画が埋め込まれているかを確認しファイルへ保存 | 解説:Pythonを使いX(Twitter)で動画付きツイートかを無料確認 |
ツイートに埋め込まれた動画を保存【プログラムはこちら】 | 指定ツイートに埋め込まれた動画を抽出しファイル保存 | 解説:Pythonを使い無料でTwitterの動画を保存する方法 |
ログイン | Twitterへログイン | 上の全記事で解説 |
タイムラインに表示された動画を保存 | 「話題を検索の最新」などのタイムラインに表示された動画を抽出しファイル保存 | 解説:PythonでX(Twitter)の最新タイムライン等から動画を保存 |
フォロー・フォロワー取得 | 指定アカウントのフォロー・フォロワーを取得 | 未稿 |
上記以外にも、ウェブブラウザでできるTwitter操作をTwitter APIなしでPythonを用いて実現できます。
上記表は随時更新していくので、ぜひ本記事のブックマークやお気に入り登録をお願いいたします。
TwitterAPIを使わない!に対するよくある質問(FAQ)
本記事でご紹介した「Twitter APIなしでPythonでのTwitter操作の方法」に関して様々な疑問があるかと思います。ここでは、以下の「よくある質問」や「疑問」に対して解説します。
【よくある質問や疑問の一覧】
・内部通信を解析する方法は?
・twintというTwitterのスクレイピングに特化したPythonライブラリは?
・Pythonでよく使われるスクレイピングライブラリは?
内部通信を解析する方法は?
Twitter上である操作をした際に、Twitter内部では様々な通信が行われています(下図参照)。
上図の「➁Twitterサーバーに処理を依頼」(内部通信)を明らかにする方法として、「ウェブブラウザのデベロッパーツール」や「Wiresharkなどのキャプチャソフト」の利用が挙げられます。
>> デベロッパーツール使い方:ChromeのHTTPリクエストをcURL形式で取得する手順
twintというTwitterのスクレイピングに特化したPythonライブラリは?
twintは、Twitterからデータ収集およびスクレイピングするためのPythonの非公式なライブラリです。twintを使うことで、公式APIを使用せずに、Twitterのデータ(ツイート、プロフィール、フォロワー、フォローなど)を収集できます。
twintはOSSであり、誰でも使える無料ライブラリでした。しかし、2023年3月30日をもってtwintの開発は終了しています。そのため、現時点でtwintを使った場合、「異常終了」や「データ取得できない」などの問題が発生します。
ですので、twintを使う場合は要注意してください。
Pythonでよく使われるスクレイピングライブラリは?
Pythonの代表的なスクレイピングライブラリとしては、以下があります。
【スクレイピングライブラリの一覧】
・selenium(詳しくはこちら)
・BeautifulSoup(詳しくはこちら)
・PyAutoGUI(詳しくはこちら):これはGUI自動化ライブラリに該当
以上がよくある質問と疑問となります。その他に気になることがありましたら、本記事のコメント欄に記入をお願いいたします。調査した上でお答えさせていただきます。
【まとめ】Twitter APIなしで操作可能!ただし特徴や規約を要確認
いかがでしたでしょうか?
上記で紹介した方法を使うことで、PythonからTwitter APIなしで様々なTwitter操作を自動化できます。
最後にもう一度内容を確認しましょう。
【おさらい】
・スクレイピングや内部通信の模倣をすることでTwitter APIなしで操作可能
・Twitterの規約を理解した上でスクレイピングなどの採用を判断すること
・プログラムから過度なTwitter操作をした場合アカウント凍結の恐れあり
本ブログでは、「Twitter運用やTwitterのデータ分析に役に立つツール」や「業務の時短化に繋がるIT技術」などを発信しています。定期的に更新していますので、ぜひブックマークをよろしくお願いいたします。
コメント