これはなに?
Instagramの画像データ使って画像解析したいなーとおもったので、下処理としてInstagram Graph API使って画像のURL取得と実際に大量の画像を一括ダウンロードするPythonスクリプトを作ってみました。
環境
- 分析環境: Jupyter notebook
- 言語: Python3
利用しているDockerImageは以下です。必要に応じて自身の環境でBuildしてください。
処理概要
- Instagram Graph APIのアクセス情報と入力パラメータの指定
- 該当のユーザーのMedia情報を取得。一度に取得できる件数に制限があるので、複数回に分けてデータ取得し、最後にDataframeを結合する。
- 各画像のURLを取得する。2.で取得したMedia情報の中のpermalinkカラムのURLに/mediaを足すと画像取得のためのURLになるのですが、実際画像を取得するにはリダイレクト先のURLを取得する必要があるので、一度Getして返ってきたURLを保存する。
- ヘッダー情報にUser-Agentを入れないと画像URLではなくログインURLが返ってきたので、値は空でヘッダーにUser-Agentを入れてます。
- 最後に画像データをローカルにダウンロードする。3.で取得したリダイレクト先URLのデータをGetしてローカルにJpgとして保管する。
- ファイル名は投稿日時にMediaIDを足すことで必ず一意になるようにしました。
ソースコード
- 以下の箇所は自身の環境に応じて良しなに修正してください。
- user_business_account_id : ビジネスアカウントID
- your_token: トークン
- username : Instagram ユーザー名
gista96ef053ffa51f3f4bf766f6d35103ba
実行結果
ポルカの公式インスタアカウント(polka_fukuoka)のデータを取得してみると以下のようになります。取得画像数としては90枚弱で処理時間としては数十秒となりました。 画像取得よりもリダイレクトURLの取得処理のほうが時間がかかってそうでした。
最後に
画像データが取得できたので、後はAzureのComputer VisionかAWSのAmazon Rekognitionで画像解析して遊ぼうと思います!