AI×Python

pythonで自身のX(twitter)のフォロワーリストを自動取得する方法【2025年版】

背景

自分のXの運用にあたって、フォロワーの属性や、フォロワー増減をチェックしたい。

参考

【2025年版 6ステップ】初心者向け 無料版X(Twitter) APIキーの取得方法

アカウント作成からPythonでXのv2APIを使ってポストを行うまでの方法(2025年2月時点)

自身のXデータの取得テスト

import tweepy

# Twitter APIの認証情報
consumer_key = "自分のKEYを入力"
consumer_secret = "自分のKEYを入力"
access_token = "自分のKEYを入力"
access_token_secret = "自分のKEYを入力"


def test_twitter_client():
    try:
        # Twitterクライアントの初期化
        client = tweepy.Client(
            consumer_key=consumer_key,
            consumer_secret=consumer_secret,
            access_token=access_token,
            access_token_secret=access_token_secret,
        )

        # 自分のユーザー情報を取得(最もシンプルなリクエスト)
        me = client.get_me()

        # 成功した場合の出力
        print("クライアント接続成功!")
        print(f"ユーザー名: @{me.data.username}")
        print(f"表示名: {me.data.name}")
        print(f"ユーザーID: {me.data.id}")

        return True

    except Exception as e:
        # エラーの詳細を表示
        print(f"エラー発生: {e}")
        print("認証情報を確認してください。")
        return False


# 実行
if __name__ == "__main__":
    print("Twitterクライアント動作確認を開始します...")
    test_twitter_client()

以下が成功した結果

Twitterクライアント動作確認を開始します...
クライアント接続成功!
ユーザー名: @prog_univ
表示名: トナカイ学長│プログラミング大学
ユーザーID:***********

フォロワー取得には、課金が必要。

自分のXのフォロワー情報の取得には、APIを有料プランにする必要がある。以下はTwitter (X) APIの無料版(Free/Essential)できる事一覧だ。

  1. ツイートの投稿・削除
    • 自分のアカウントからツイートを投稿
    • 自分のツイートの削除
  2. 自分のプロフィール管理
    • プロフィール情報の取得
    • プロフィール情報の更新
  3. 基本的なユーザー情報
    • 自分のアカウント情報(get_me)
    • 公開ユーザープロフィールの閲覧(限定的)
  4. リツイート・いいね
    • 特定のツイートをリツイート
    • ツイートにいいねを付ける/取り消す
  5. メディアアップロード
    • 画像のアップロード
    • 動画のアップロード(制限あり)
  6. 自分のタイムライン
    • 自分のホームタイムラインの取得(制限あり)
    • 自分のツイートの取得
  7. 一部の検索機能
    • 非常に限定的なキーワード検索(厳しいレート制限あり)
  8. OAuth認証
    • アプリケーションの認証
  9. ダイレクトメッセージ(DM)
    • 基本的なDM機能(送信・受信)
  10. アプリレート制限
    • 月間最大1,500ツイート

twikitを使ってみる

どうやら、twikitならユーザー名とパスワードで、フォロワー情報の取得もできそうという事が判明。

ただ、twikitは内部的にスクレイピングで動作する仕組みなため、Xのスクレイピング禁止規約である現状リスクがあります。

念のため、捨てアカウントを作成して、自分のXを検索しフォロワー情報の取得という流れで取得を試みます。

参考

【Python×Twitter】TwikitでらくらくSNS運用

【閲覧注意】API不要でXを操作できるpythonライブラリ”twikit”がヤバ過ぎた

pip でインストール

pip install twikit

試しに作成した捨垢でログインして、ヒカキンの最新のツイートを取得するコードを組む。

from twikit import Client
import os
import asyncio

cookies_file = "cookies.json"
target_screen_name = "hikakin"
tweet_count = 5
acount_id= "@捨垢ユーザID(mail/電話でもOK)"
account_pw = "捨垢パスワード"

client = Client("ja-JP")


async def main():
    # cookies.jsonが存在するか確認
    if os.path.exists("cookies.json"):
        client.load_cookies("cookies.json")
    else:
        await client.login(auth_info_1=acount_id, password=account_pw)
        # ログイン後にクッキーを保存
        client.save_cookies("cookies.json")

    try:

        user = await  client.get_user_by_screen_name(target_screen_name)
        tweets = await user.get_tweets("Tweets", count=5)
        if tweets:
            print(f"ユーザー {target_screen_name} の最新のツイート {tweet_count} 件:")
            for tweet in tweets:
                print(f"- {tweet.text}")
        else:
            print(f"ユーザー {target_screen_name} のツイートが見つかりませんでした。")
    except Exception as e:
        print(f"ツイートの取得中にエラーが発生しました: {e}")


asyncio.run(main())

実行結果がこちら

実行時のヒカキンツイート一覧

自分のアカウントのフォロワー情報の取得

使えることは確認したので、自分のアカウントに対して、フォロワー情報の取得とjson出力を行っていく。

from twikit import Client
import os
import asyncio
import json
from datetime import datetime

cookies_file = "cookies.json"
target_screen_name = "hikakin"#対象アカウント
acount_id= "@捨垢ユーザID"
account_pw = "捨垢パスワード"

client = Client("ja-JP")


async def main():
    # cookies.jsonが存在するか確認
    if os.path.exists(cookies_file):
        client.load_cookies(cookies_file)
    else:
        await client.login(auth_info_1=acount_id, password=account_pw)
        # ログイン後にクッキーを保存
        client.save_cookies(cookies_file)

    try:
        user = await client.get_user_by_screen_name(target_screen_name)
        if user:
            followers = await user.get_followers()
            follower_list = [follower.screen_name for follower in followers]

            output_data = {
                "target_account_id": target_screen_name,
                "executed_at": datetime.now().isoformat(),
                "followers": follower_list,
            }

            json_output = json.dumps(output_data, indent=4, ensure_ascii=False)
            print(json_output)

            # 必要であればファイルに保存
            with open(
                f"followers_{target_screen_name}.json", "w", encoding="utf-8"
            ) as f:
                json.dump(output_data, f, indent=4, ensure_ascii=False)

        else:
            print(f"ユーザー {target_screen_name} が見つかりませんでした。")

    except Exception as e:
        print(f"フォロワーリストの取得中にエラーが発生しました: {e}")


if __name__ == "__main__":
    asyncio.run(main())

現行のXの仕様だと、フォロワーリストの内50件しか取得できないです。

他の方法で自分のフォロワーリストを取得する必要があるかもしれません。

アカウント凍結

実行した翌朝、トナカイ学長アカウントが凍結されていました。かなり痛い。

Cokkie利用が遅れたのが原因でしょうか。短時間に複数回のログインがボット判定になったしまったようです。

現在、異議申し立て中ですが望み薄。。。

凍結解除:参考

Yahoo知恵袋:至急昨日いきなりTwitter(X)のアカウントを凍結されました …

【保存版】Twitter凍結の異議申し立て例文テンプレート

定期実行を実装

Windowsであればタスクスケジューラを使った方法がある

Pythonをwindowsタスクスケジューラで定期実行させる

OSを問わずPythonのプログラムでスケジュール実行する方法はライブラリの「schedule」を活用する。

scheduleを使ってPythonで定期実行

GUIの実装

オシャレで簡単なPythonのGUI、fletが一番おススメです。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です