今回はPythonでInstagram Graph APIを使って特定のアカウントの投稿情報(キャプション タグ 投稿画像)などを取得する方法について紹介したいと思います
前準備
Instagram Graph APIを使用するためにはアクセストークンと自分のインスタアカウントの内部IDが必要になります。取得方法については以下に纏めていますのでまだの方は参考にしてください
関連記事:【2023年版】Instagram Graph APIのアクセストークンを取得する方法
Instagram Graph APIを使って特定のアカウントの投稿情報を取得
import requests
import json
import datetime
from pprint import pprint
def basic_info():
# 初期化
config = dict()
# アクセストークン
config["access_token"] = 'xxxx'
# インスタグラムビジネスアカウントID
config['instagram_account_id'] = "11111"
# APIのバージョン
config["version"] = 'v16.0'
# APIドメイン
config["graph_domain"] = 'https://graph.facebook.com/'
# APIエンドポイント
config["endpoint_base"] = config["graph_domain"]+config["version"] + '/'
# 出力
return config
# APIリクエスト用の関数
def InstaApiCall(url, params, request_type):
# リクエスト
if request_type == 'POST' :
# POST
req = requests.post(url,params)
else :
# GET
req = requests.get(url,params)
# レスポンス
res = dict()
res["url"] = url
res["endpoint_params"] = params
res["endpoint_params_pretty"] = json.dumps(params, indent=4)
res["json_data"] = json.loads(req.content)
res["json_data_pretty"] = json.dumps(res["json_data"], indent=4)
# 出力
return res
def getUserMedia(params,pagingUrl='') :
"""
***************************************************************************************
【APIのエンドポイント】
https://graph.facebook.com/{graph-api-version}/{ig-user-id}/media?fields={fields}&access_token={access-token}
***************************************************************************************
"""
# エンドポイントに渡すパラメータ
Params = dict()
Params['fields'] = 'id,caption,media_type,media_url,permalink,thumbnail_url,timestamp,username' # フィールド
Params['access_token'] = params['access_token'] # アクセストークン
if pagingUrl=='':
# 先頭のページリンク取得
url = params['endpoint_base'] + params['instagram_account_id'] + '/media'
else :
# 特定のページリンク取得
url = pagingUrl
# 出力
return InstaApiCall(url, Params, 'GET')
# パラメータ
params = basic_info()
# 結果出力(先頭ページ)
response = getUserMedia(params)
print ("\n----------"+str(response['json_data']['data'][0]["username"])+"の投稿内容 ----------\n")
for i, post in enumerate(response['json_data']['data']) :
print ("\n----------投稿内容("+str(i+1)+")----------\n")
print ("投稿日: " + post['timestamp'])
print ("投稿メディアID: "+post['id'])
print ("メディア種別: " + post['media_type'])
print ("投稿リンク: " + post['permalink'])
print ("\n投稿文: " + post['caption'])
# 結果出力(2ページ目)
try:
response = getUserMedia(params, response['json_data']['paging']['next'])
print ("\n----------"+str(response['json_data']['data'][0]["username"])+"の投稿内容 ----------\n")
for i, post in enumerate(response['json_data']['data']) :
print ("\n----------投稿内容("+str(i+1)+")----------\n")
print ("投稿日: " + post['timestamp'])
print ("投稿メディアID: "+post['id'])
print ("メディア種別: " + post['media_type'])
print ("投稿リンク: " + post['permalink'])
print ("\n投稿文: " + post['caption'])
except:
pass
実行すると、アカウントの投稿内容が出力されます。
関連記事:【GAS】Instagram Graph APIを使ってプロフィール画面のインサイト情報を取得する
関連記事:【GAS】Instagram Graph APIを使って投稿ごとのインサイト情報を取得する

コメント
[…] 関連記事:【Python】Instagram Graph APIで投稿情報を一括スクレイピングする […]
[…] 関連記事:【Python】Instagram Graph APIで投稿情報を一括スクレイピングする […]