今回は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で投稿情報を一括スクレイピングする […]