見出し画像

Pythonでインスタグラムをスクレイピングしてみた

今回、案件によくあるインスタグラムのデータ取得をこなせるようにまとめてみました。

Instagram Gragh API

Instagram Gragh APIの取得の流れを説明していきます。

まずはインスタグラムの設定をプロアカウントに変更します。

instagramの設定から変更

↓のところをクリック

↓のプロアカウントに切り替えるをクリック

ビジネスを選択します

FacebookとInstagramを連携

Facebookにログインし設定のページを選択

Facebookのページを作成後リンク済みのアカウントを選択

「リンクする」をクリックします

リンクするインスタグラムにログインすると完了です。

Meta for Developers

↓のリンク先のFacebook for developersでアカウントを作成します。

利用を開始するをクリックします。

次へをクリック

開発者を選択し登録完了をクリックするとアカウントは作成されます。

Facebookアプリを作成

その他を選択

ビジネスを選択

アプリ名を書いてアプリ作成をクリックすると最後にパスワードを求められるので入力して次へ

アプリ設定のベーシックを選択

ここで表示されるアプリIDとapp secretをしっかり保存しておいてください!

1個目のアクセストークンの取得

↓のサイトからアクセストークンを取得します

ページアクセストークンを選択

↓の選択をクリックし

↓の項目にチェックを入れます。

2個目のアクセストークン取得


前回のアプリID、前回のapp secret、前回のアクセストークンを↓に書き換えてください。

https://graph.facebook.com/v11.0/oauth/access_token?grant_type=fb_exchange_token&client_id=「前回のアプリID」&client_secret=「前回のapp secret」&fb_exchange_token=「前回のアクセストークン」

そうすることで2回目のアクセストークンが発行されます。
{"access_token":「2回目のアクセストークン」,"token_type":"bearer"--}

3個目のアクセストークン取得(無期限のアクセストークン)

https://graph.facebook.com/v11.0/me?access_token=「2回目のアクセストークン」

これをブラウザで入力すると

{
   "name": "名前",
   "id": "ID"
}

のように表示されるのでこのIDを使って

https://graph.facebook.com/v11.0/[ここに上のIDを入力]/accounts?access_token=[ここに2個目のアクセストークン]

これを入力すると

{
   "data": [
      {
         "access_token": 
---
---
"paging": {
}

こんな感じで取得できます。
errorが表示されたら失敗しているのでやり直してください。

作成できたアクセストークンを↓のアクセストークンに貼り付けます

↓に3個目のアクセストークンを貼り付けて


ここに「me?fields=instagram_business_account」と書き直す

最後に送信ボタンを押します。

すると

{
  "instagram_business_account": {
    "id": "0000000000"
  },
  "id": "000000000"
}

これで必要なIDとアカウントトークンの取得完了です!
このIDとアカウントトークンを使ってインスタグラムのデータを取得していきます。

APIを使ってIDとURLのを取得するコード

import requests
import json

def get_first_post_data(hashtag, access_token):
    # ハッシュタグIDを取得
    search_url = f"https://graph.facebook.com/v14.0/ig_hashtag_search?user_id={user_id}&q={hashtag}&access_token={access_token}"
    response = requests.get(search_url)
    print(f"APIレスポンス::{response}")
    print("---" * 10)
    hashtag_id = response.json()['data'][0]['id']
    print(f"hashtag_id::{hashtag_id}")
    print("---" * 10)

    # ハッシュタグIDを使用して最初の投稿を取得
    posts_url = f"https://graph.facebook.com/v14.0/{hashtag_id}/recent_media?user_id={user_id}&fields=id,media_url,caption&access_token={access_token}&limit=1"
    posts_response = requests.get(posts_url)
    posts_data = posts_response.json()
    print(f"posts_data::{posts_data}")
    print("---" * 10)

# アクセストークンとユーザーIDを設定
access_token = '3個目のトークン'
user_id = 'ID'

# ハッシュタグを設定
hashtag = '希望のキーワード'

# 結果の取得と表示
result = get_first_post_data(hashtag, access_token)
print(json.dumps(result, indent=4))

こんな感じです。
お試しください!

この記事が気に入ったらサポートをしてみませんか?