Pythonライブラリ「Instaloader」を使用した基本的なサンプルコードです。
ライブラリのインストール
# Instaloaderのインストール
pip install instaloader
指定ユーザのプロフィール情報を取得するコード
- プロフィール情報取得:フォロワー数、投稿数など基本情報
- 投稿ダウンロード:メディアファイルとメタデータ(キャプション、いいね数など)を保存
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に設定する必要あり
コメント