python

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

python twitter 画像 取得

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

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

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

pythonでtwitterを操作してみたい

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

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

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

pythonでtwitterを使ってみよう

pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります

pythonを使ったtwitter自動化-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を使って収益化できるようになります。...

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

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.