[Python]Instagramの投稿情報取得

言語
言語

Pythonライブラリ「Instaloader」を使用した基本的なサンプルコードです。

ライブラリのインストール

# Instaloaderのインストール
pip install instaloader

指定ユーザのプロフィール情報を取得するコード

  1. プロフィール情報取得:フォロワー数、投稿数など基本情報
  2. 投稿ダウンロード:メディアファイルとメタデータ(キャプション、いいね数など)を保存
import instaloader

# Instaloaderインスタンスの作成
L = instaloader.Instaloader()

try:
    # Instagramにログイン(必要に応じて)
    # L.context.log(\"ログイン中...\")
    # L.login(\"your_username\", \"your_password\")  # 認証が必要な操作の場合

    # プロフィール情報の取得
    def get_profile_info(username):
        profile = instaloader.Profile.from_username(L.context, username)
        print(f\"【{username} のプロフィール情報】\")
        print(f\"フォロワー数: {profile.followers}\")
        print(f\"フォロー数: {profile.followees}\")
        print(f\"投稿数: {profile.mediacount}\")
        print(f\"バイオ: {profile.biography}\")
        return profile

    # 特定ユーザーの最新投稿をダウンロード
    def download_recent_posts(username, count=3):
        profile = get_profile_info(username)
        posts = profile.get_posts()
        for index, post in enumerate(posts, 1):
            if index > count:
                break
            L.download_post(post, target=f\"{username}_posts\")
            print(f\"ダウンロード完了: {post.url}\")

    # 実行例
    if __name__ == \"__main__\":
        target_user = \"instagram\"  # 公式アカウント(テスト用)
        
        # プロフィール情報取得
        get_profile_info(target_user)
        
        # 最新3投稿をダウンロード
        download_recent_posts(target_user, count=3)
        
except instaloader.exceptions.ProfileNotExistsException:
    print(\"プロファイルが存在しません\")
except instaloader.exceptions.ConnectionException as e:
    print(f\"接続エラー: {str(e)}\")
except Exception as e:
    print(f\"エラーが発生しました: {str(e)}\")

特定のタグに関連する最新投稿を取得するコード

ハッシュタグ検索:特定のタグに関連する最新投稿を取得

import instaloader

# Instaloaderインスタンスの作成
L = instaloader.Instaloader()

try:
    # Instagramにログイン(必要に応じて)
    # L.context.log(\"ログイン中...\")
    # L.login(\"your_username\", \"your_password\")  # 認証が必要な操作の場合

    # ハッシュタグ検索
    def search_hashtag(tag, count=5):
        print(f\"ハッシュタグ \'#{tag}\' の最新投稿:\")
        for post in instaloader.Hashtag.from_name(L.context, tag).get_posts():
            print(f\" - {post.owner_username}: {post.caption[:50]}...\")
            if (count := count - 1) <= 0:
                break

    # 実行例
    if __name__ == \"__main__\":
        
        # ハッシュタグ検索
        search_hashtag(\"python\", count=2)

except instaloader.exceptions.ProfileNotExistsException:
    print(\"プロファイルが存在しません\")
except instaloader.exceptions.ConnectionException as e:
    print(f\"接続エラー: {str(e)}\")
except Exception as e:
    print(f\"エラーが発生しました: {str(e)}\")

注意事項

  • 連続的なリクエストはInstagramの利用規約違反となる可能性あり
  • 非公開アカウントのデータ取得は禁止
  • ダウンロードしたデータの利用は著作権法を遵守
  • ログインする場合は2要素認証をOFFに設定する必要あり

Q よくある質問 (FAQ)
Q. Instaloaderを使用する際、Instagramの公式APIキーや開発者アカウントは必要ですか?
A.
いいえ、不要です。Instaloaderは公開されているWebページから情報を取得するため、公式APIの登録や認証情報の取得なしで簡単に利用を開始できます。
Q. 大量の投稿データを連続して取得しても問題ありませんか?
A.
いいえ、短時間での連続リクエストはInstagramの利用規約違反や一時的なアクセス制限(ブロック)の原因となります。適切なスリープ処理を挟むなど、実行速度や頻度に注意してください。

コメント

タイトルとURLをコピーしました