これまではpythonを通じて、いいねやリツイートを行う作業をメインにしていたのですが、今回はpythonでtwitterから画像を取得してみようと思います
twitterのタイムラインって音速で更新されていって、好きな画像を保存するのが大変ですよね
でもpythonを使えば、指定したキーワードに関連する画像を勝手に保存してくれます
pythonでtwitterを操作してみたい
pythonでtwitterから画像を取得したい
という方向けに、pythonを使ったtwitterのトレンド取得方法について解説していきます
以下の記事では、pythonでtwitterを使う方法をまとめて解説しているので、参考にしてみてください
pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります
Contents
pythonでtwitterから画像を取得する方法

pythonでtwitterを操作するには、
- python-twitter
- TwitterAPI
- tweepy
- twython
などのライブラリを使用する必要があります
今回は「tweepy」を使って、pythonでtwitterの画像を取得したいと思います

pythonでtwitterから画像を取得するには、twitter APIの申請に通っている必要があります
まだ申請が通っていない方は、以下の記事を参考に申請を通しておきましょう

tweepyのインストール
twitter APIの申請が終わったら、tweepyをインストールしておきます
Macならターミナルで、windowsならコマンドプロンプトで以下のコマンドを打ちます
pip install tweepy
これでpythonでtwitterを操作することができます
pythonでtwitterから画像を取得する方法コード紹介

pythonでtwitterから画像を取得する方法はこちらのコードを改変しています
apiの設定や検索の掛け方を改変しないと動作しなかったので、改変しました
# 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を初めて10ヶ月で収益5桁を突破しました
突破した方法は以下の記事で解説していますが、もっと早く収益を出すならばスクールに通うのが一番です

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