python PR

pythonでtwitterから画像を取得する方法【サンプルコードあり】

python twitter 画像 取得
記事内に商品プロモーションを含む場合があります

これまではpythonを通じて、いいねやリツイートを行う作業をメインにしていたのですが、今回はpythonでtwitterから画像を取得してみようと思います

twitterのタイムラインって音速で更新されていって、好きな画像を保存するのが大変ですよね

でもpythonを使えば、指定したキーワードに関連する画像を勝手に保存してくれます

pythonでtwitterを操作してみたい

pythonでtwitterから画像を取得したい

という方向けに、pythonを使ったtwitterのトレンド取得方法について解説していきます

以下の記事では、pythonでtwitterを使う方法をまとめて解説しているので、参考にしてみてください

pythonでtwitterを使ってみよう

pythonでtwitterから画像を取得する方法

python twitter 画像 取得

pythonでtwitterを操作するには、

  • python-twitter
  • TwitterAPI
  • tweepy
  • twython

などのライブラリを使用する必要があります

今回は「tweepy」を使って、pythonでtwitterの画像を取得したいと思います

python twitter tweepy
pythonでtwitterが扱えるtweepyについて【サンプルコードあり】今回はpython初心者でも扱いやすい、「tweepy」について解説をしていきたいと思います。tweepyを使用すれば、twitter操作のほとんどを行うことができ、さらにbot作成まで行えます。よく使用する「いいね」や「リツイート」方法についても、サンプルコードを交えて解説をしていきます。...

pythonでtwitterから画像を取得するには、twitter APIの申請に通っている必要があります

まだ申請が通っていない方は、以下の記事を参考に申請を通しておきましょう

pythonでtwitter APIを使用する方法
pythonでtwitter APIを取得する方法【全18枚の図解+例文あり】twitterのAPI取得は年々厳しくなってきています。今回は筆者が2022年にpythonでtwitter APIを取得するために行なった方法を図解+例文つきで紹介していきます。pythonでtwitterを利用する際には、twitter APIの取得が必須になるので、参考にしてください。...

tweepyのインストール

twitter APIの申請が終わったら、tweepyをインストールしておきます

Macならターミナルで、windowsならコマンドプロンプトで以下のコマンドを打ちます

pip install tweepy

これでpythonでtwitterを操作することができます

pythonでtwitterから画像を取得する方法コード紹介

コード解説

pythonでtwitterから画像を取得する方法はこちらのコードを改変しています

apiの設定や検索の掛け方を改変しないと動作しなかったので、改変しました

TwitterImgDownload

# IMPORT
import os
import tweepy
import time 
import urllib.request, urllib.error

# 画像の保存先
#保存先のパス名を「*****」に入力
IMG_DIR = '******'

# 環境変数
CONSUMER_KEY        = '******'
CONSUMER_SECRET     = '******'
ACCESS_TOKEN_KEY    = '******'
ACCESS_TOKEN_SECRET = '******'

# 検索キーワード
#好きなキーワードを「*****」に入力
TARGET = '*****'

# 検索オプション
SEARCH_PAGES_NUMBER = 10 # 読み込むページ数
PER_PAGE_NUMBER = 10 # ページごとに返されるツイートの数(最大100)

class imageDownloader(object):
    def __init__(self):
        """初期設定
        """
        super(imageDownloader, self).__init__()
        self.set_api()

    def run(self):
        """実行
            1. twitterページを指定数取得
            2. ページ内のツイートのうち、キーワードがあるtweetのみ取得
            3. 画像URLを取得
            4. ダウンロード実行
        """
        self.max_id = None # ページを跨ぐ検索対象IDの初期化
        for page in range(SEARCH_PAGES_NUMBER):
            ret_url_list = self.search(TARGET, PER_PAGE_NUMBER)
            for url in ret_url_list:
                print('OK ' + url)
                self.download(url)
            time.sleep(0.1) # TimeOut防止

    def set_api(self):
        """apiの設定
        """
        auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
        self.api = tweepy.API(auth)

    def search(self, target, rpp):
        """twitterで検索実行
        """
        # 検索結果
        ret_url_list = []

        try:
            # 検索実行
            if self.max_id:
                # q: クエリ文字列, rpp: ツイート数, max_id: より小さい(古い)IDを持つステータスのみを返す
                res_search = self.api.search_tweets(q=target, lang='ja', rpp=rpp, max_id=self.max_id)
            else:
                res_search = self.api.search_tweets(q=target, lang='ja', rpp=rpp)
            # 結果を保存
            for result in res_search:
                if 'media' not in result.entities: continue
                for media in result.entities['media']:
                    url = media['media_url_https']
                    if url not in ret_url_list: ret_url_list.append(url)
            # 検索済みidの更新し、より古いツイートを検索させる
            self.max_id = result.id
            # 検索結果の返却
            return ret_url_list
        except Exception as e:
            self.error_catch(e)

    def download(self, url):
        """画像のダウンロード
        """
        url_orig = '%s:orig' % url
        path = IMG_DIR + url.split('/')[-1]
        try:
            response = urllib.request.urlopen(url=url_orig)
            with open(path, "wb") as f:
                f.write(response.read())
        except Exception as e:
            self.error_catch(e)

    def error_catch(self, error):
        """エラー処理
        """
        print("NG ", error)

def main():
    """メイン処理
    """
    try:
        downloader = imageDownloader()
        downloader.run()
    except KeyboardInterrupt:
        # Ctrl-Cで終了
        pass

if __name__ == '__main__':
    main()

ツイートを呼び出す時の注意点

API制限のため,一度の呼び出しで取得できるツイート数は200件までとなっています

読み込むページ数とツイート数の合計が200をこえなければ問題ありません

for文を使えば、かなりの数のツイートを呼び出し、画像を取得することができます

気をつけておきたいのは、15分間で180回までの呼び出しとなるので、それを超えないようにfor文を作る必要があります

pythonの知識・技術を上げたい

pythonの知識・技術を上げたい

pythonの知識・技術を上げて、手っ取り早く収益を上げたい

と思っている方が大半かと思います

僕はpythonを初めて10ヶ月で収益5桁を突破しました

突破した方法は以下の記事で解説していますが、もっと早く収益を出すならばスクールに通うのが一番です

アイキャッチ
pythonを独学で学び収益を出す方法【無料特典あり】pythonを独学で学び始めて筆者が、どのように収益5桁を達成したのかを具体的に解説していきます。この順番に進めていけば、一年以内にpythonを使って収益化できるようになります。...

以下の記事では無料体験ができるおすすめのプログラミングスクールを紹介しています

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.