【悩み】
・Twitterのタイムラインなどに表示される画像をPythonで保存したい!
・できる限り無料で画像ダウンロードを実現する方法を知りたい。
・TwitterのAPIを使えば良い?お金はかかるのだろうか?
・Twitterで画像収集が趣味!でも手動だと収集できる数に限りがある…
・限られた時間で手軽に検索欄の画像を大量に保存する方法を知りたい。
こういった「悩み」に答えます。
【本記事の内容】
① そもそもTwitterの画像を保存(取得)するとは?
➁ PythonでTwitterの画像を保存する方法2選
➂ 無料でPythonを使って画像を保存するたった1つの方法
④ 手順:GUI自動化ツールを使ってPythonスクリプトを自作
本記事に掲載した手順を実践したことで、Twitter APIに課金することなくPythonからTwitterの検索欄・いいね欄・タイムラインから画像を保存できるようになりました(下の動画参照)。
記事の前半では「PythonでTwitterの画像を保存する方法」と「無料でPythonからTwitterの画像を取得し保存が可能か?に対する調査結果」を解説します。
記事の後半では、「無料でPythonを使って検索欄・いいね欄・タイムラインに表示された画像を保存する方法や具体的なプログラム」を説明します。
この記事を読み終えることで、「Twitter APIに課金することなくPythonからTwitterの画像を取得し保存できる」状態になります。
本ブログでは、Twitter APIなしでPythonから様々なTwitter操作を自動化する方法をご紹介しています。その他の操作自動化を知りたい方は、以下の記事をご覧ください。
>> 【実例8選】APIなしでPythonでのTwitter操作を実現する方法
そもそもTwitterの画像を保存(取得)するとは?
以下の順番で、Twitter(現X)の画像保存に関してご紹介します。
【ご紹介事項】
・実演で理解!Twitterの画像を保存するとは?
・なぜ画像の保存を自動化したい?利用場面や利点は?
・画像を保存する際の注意点
実演で理解!Twitterの画像を保存するとは?
X(エックス)、旧Twitterの画像を保存するとは、Twitterのいいね欄・検索欄・タイムライン(TL)で表示された画像付きツイート(ポスト)から画像をダウンロードして、自身のパソコンなどのデバイスに保存することを指します。画像保存することで、Twitter上の特定の画像をオフラインで閲覧できるようにし、必要な場合に共有することもできます(下図参照)。
Pythonを使うことで、以下の動画のように、検索欄に表示された画像を自分自身でTwitterを操作することなく保存できます。
なぜ画像の保存を自動化したい?利用場面や利点は?
Twitterの画像保存をPythonを使い自動化することは、以下のように様々な場面で求められています。
場面 | 詳細 |
メディアコンテンツの収集 | ニュース記事、ブログ、研究などでは、特定のトピックに関連する画像を収集し、分析や執筆のために保存する必要があります。 |
ソーシャルメディアマーケティング | マーケティング専門家は、競合他社や業界のトレンドを追跡するために、Twitterから画像を自動的に収集し、競合情報を分析することがあります。 |
モニタリング | 特定のハッシュタグやキーワードに関連する画像を自動的に収集し、特定のトピックやイベントに関連する情報をモニタリングすることができます。 |
娯楽と趣味 | ある特定の趣味や関心事に関連する画像を収集して、コレクションを作成するために利用されることがあります。 |
また、画像保存を自動化することの利点としては、以下が挙げられます。
利点 | 詳細 |
効率の向上 | 自動化により、大量の画像を高速かつ連続的に収集および保存できます。人間が手動で行うよりもはるかに迅速に作業を進めることができます。 |
繰り返しの排除 | 毎回同じ手作業を繰り返す必要がなくなります。これにより、作業の単調さを軽減し、作業者のモチベーションを向上させることができます。 |
正確性の向上 | 自動化は一貫して高い精度でタスクを実行します。手動でのヒューマンエラーやミスを最小限に抑え、正確な結果を得ることができます。 |
時間の節約 | 自動化により、時間のかかる作業を大幅に削減できます。これは、作業者がより重要なタスクに時間を割くために使える時間を増やすのに役立ちます。 |
多くのデータの処理 | 大量のデータを自動的に処理できるため、情報の取得および分析が簡単に行えます。これはマーケットリサーチやトレンド分析に特に役立ちます。 |
監視と通知 | 特定のツイートや画像の変化を自動的に監視し、特定の条件が満たされた場合に通知を生成することができます。これはセキュリティやモニタリングの分野で有用です。 |
PythonでTwitterの画像保存を実現することで様々なメリットを得られます。そのため、本記事でご紹介する方法を把握することは損にはなりません。
画像を保存する際の注意点
1つ目の注意点としては、「著作権」です。X(旧Twitter)に掲載されている画像には著作権があります。私的利用の範囲なら画像保存は問題ないですが、他サイトへの転載やアイコン画像としての利用は著作権侵害となります。
2つ目の注意点としては、「過度な自動化」です。API以外の方法で過度な自動操作を行った場合、アカウントが一時的にロックされたり凍結されたりする可能性があります(下図参照)。
Twitterの画像保存を自動化することで様々なメリットを得られます。ただし、過度に実施するとアカウント凍結の恐れがあるので注意してください。
PythonでTwitterの画像を保存する方法2選
PythonでTwitterのいいね欄・タイムライン・検索式に表示された画像を保存したい場合、本記事執筆時点では、以下の方法があります。それぞれの方法の概要を簡単にご紹介します。
【ご紹介事項】
・方法①:Twitterの有料API(Basic以上)を利用
・方法➁:GUI自動化ライブラリを使ってPythonスクリプトを自作
方法①:Twitterの有料API(Basic以上)を利用
Twitterには、「Twitter API」という仕組みがあり、この仕組みを使うことで、簡単にPythonなどのプログラミング言語からTwitterを操作できます。
Twitter APIには以下の4種類があり、Pythonから画像の保存を行いたい場合、Basic以上を選択する必要があります。
そのため、本記事執筆時点では、月に$100(約1万円弱)支払わなければ、PythonでTwitterの画像保存を自動化することができないです。
項目 | 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)プランで使える機能と制限回数(公式サイト)
方法➁:GUI自動化ライブラリを使ってPythonスクリプトを自作
Pythonには、Webブラウザを操作できるライブラリがあります。以下のようなライブラリを使うことで、Pythonプログラム内でTwitterの画像保存を自動で行えます。
ちなみに、冒頭でご紹介した動画では、PyAutoGUIを使って無料で画像保存を自動化しています。
【GUI自動化ライブラリの一覧】
・PyAutoGUI(詳しくはこちら)
・selenium(詳しくはこちら)
以上が、Twitterの画像保存をPythonで自動化する方法となります。ご自身にあった方法を選択しましょう。
無料でPythonを使って画像を保存するたった1つの方法
以下に関して順番に説明します。結論から言いますと、PythonからTwitterの画像保存を無料で実現したい場合、先ほどご紹介した「方法➁:GUI自動化ライブラリを使ってPythonスクリプトを自作」を採用するしかないです。
【ご紹介事項】
・そもそも有料ではダメな理由
・無料で画像を保存できるPythonライブラリは存在する?
そもそも有料ではダメな理由
Twitter APIのBasic以上を使うことで、Pythonから画像付きツイートの画像保存を実現できます。ただし、月1万円程度の費用が発生します。
また、BasicとProの違いの一つとして、「単位時間あたりに発行できるAPI回数」があります。「APIを発行できる回数」としては、以下の違いがあります。
プラン | いいねしたツイート取得回数 (liked_tweets) | タイムラインの取得回数 (users_param_tweets) | ツイート検索の回数 (tweets_search_recent) |
Basic | 15分で5回 | 15分で10回 | 15分で60回 |
Pro | 15分で75回 | 15分で1500回 | 15分で450回 |
上記の表より、Basicを選択した場合、APIを発行できる回数が極端に少ないため、実用化に障壁があります。また、APIを発行できる回数が多いProを選択した場合、月50万円程度の費用が発生します。
以上より、費用と回数の問題があるため、Twitter APIを使うことを躊躇する方が多いです。
無料でツイート取得できるPythonライブラリは存在する?
Twitter APIの有料化が2023年3月に実施されました。さらに、簡単にスクレイピングできないようにjavascriptなどで画面表示を難解化し徹底したスクレイピング対策がされました。
それまでは、Pythonライブラリであるtweepyやbeautifulsoupによるスクレイピングで無料でツイート取得できていました。
ちなみに、以下のtweepyを使ったスクリプトを作成し実行することで、無料でツイート内に掲載された画像を保存できました。
import tweepy
import os
# Twitter APIの認証情報を設定(Twitter Developerで取得)
consumer_key = "YOUR_CONSUMER_KEY"
consumer_secret = "YOUR_CONSUMER_SECRET"
access_token = "YOUR_ACCESS_TOKEN"
access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"
# Tweepyを初期化
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# ユーザー名(@username)を指定
username = "twitter_username"
# ユーザーのツイートを取得
tweets = api.user_timeline(screen_name=username, count=10)
# 画像を保存するディレクトリを作成
if not os.path.exists(username):
os.makedirs(username)
# ツイートから画像を抽出して保存
for tweet in tweets:
if 'media' in tweet.entities:
for image_info in tweet.entities['media']:
image_url = image_info['media_url']
image_filename = os.path.basename(image_url)
image_path = os.path.join(username, image_filename)
# 画像をダウンロードして保存
response = api.media_download(image_url)
if response.status_code == 200:
with open(image_path, "wb") as file:
file.write(response.content)
print(f"Saved: {image_path}")
else:
print(f"Failed to download: {image_url}")
print("Images saved successfully!")
Twitter Developerの登録手順に関しては、以下の記事をご覧ください。
>> 【コピペOK】PythonからTwitterへ自動投稿(ツイート)する手順
以上より、APIやスクレイピングなしでいいね欄・検索欄・タイムラインに表示された画像をPythonから無料で保存したい場合、先ほどご紹介した「方法➁」を採用するしかないです。
手順:GUI自動化ツールを使ってPythonスクリプトを自作
多くの人に公開することにより、Twitter社によって「方法➁」が禁止され、Pythonから無料で画像保存する方法がなくなってしまう可能性があります。
大変申し訳ありませんが、方法➁の作り方は、本記事では非公開とさせてください。
どうしても作り方を知りたい方は、以下の有料記事のご購入を検討してください。有料記事には、「プログラムの流れ」「必要なツールやライブラリをインストール手順」「具体的なプログラム」を掲載しています。
>> PythonでTwitterの検索欄から画像を無料で保存する方法(Note)
>> PythonでTwitterのいいね欄やTLから画像を無料保存する(Note)
上記Noteに掲載したプログラムの実行例は、以下となります。PythonからTwitterを操作でき、ツイートに掲載された画像保存も自動化できています。
上記のプログラムの詳細が気になる方は、以下からアクセスしてください。
>> PythonでTwitterの検索欄から画像を無料で保存する方法(Note)
>> PythonでTwitterのいいね欄やTLから画像を無料保存する(Note)
【まとめ】Pythonから無料で画像を取得し保存は可能!
いかがでしたでしょうか?
上記で紹介した方法を使うことで、Pythonから無料でTwitterの画像を取得し保存ができます。
最後にもう一度内容を確認しましょう。
【おさらい】
・Twitter APIを使うとPythonから画像保存ができる!ただし有料…
・Basicプランでは実用化に不向き、かといって、Proプランは高額である…
・GUI自動化ライブラリを使うことでPythonから無料で画像保存が可能!
Pythonから無料でTwitterの画像保存を自動化するスクリプトを知りたい方は、以下にアクセスしてください。累計販売部数に応じて、価格を上げていくつもりなので、はやめのご購入をオススメします。
>> PythonでTwitterの検索欄から画像を無料で保存する方法(Note)
>> PythonでTwitterのいいね欄やTLから画像を無料保存する(Note)
コメント