[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に設定する必要あり

コメント

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