Python データ分析

Python Twitter APIでフォロワーの全データを取得する [Twitter APIを利用します!]

  • このエントリーをはてなブックマークに追加
  • Pocket

Pythonで自分のフォロワーを取得する

今回は、Pythonでツイッターのフォロワーをすべて取得します。

Tweepyを利用して、以下のことをためしてみました。

  • PythonのTwitter APIのライブラリTweepyで、ある特定のユーザーのフォロワーをすべて取得する
  • そのフォロワーのFollow数とFollowing数を取得する
  • Pandasを利用して、データをCSVに保存する

まず、以下のコードを書き、特定のユーザーIDから、そのフォロワーのリストを取得し、一人ひとりのフォロワー数とフォロウィング数を取得し、CSVに落とし込むスクリプトを書いてみました。

環境

  • Windows 10
  • Windows Subsystem for LinuxでUbuntuを利用
  • Python3

スクリプト

Tweepyを使っていて、ツイッターのAPIを利用できるTweepyというライブラリを使って、データを取ってきます。

$ pip install tweepy

処理内容としては、以下のようになります

  • Twitter APIの認証キーの設定
  • Tweepyでインスタンスを作成
  • 以下をmainの中で実行
    • 全フォロワーのIDをリスト形式で取得し、以下for文で取得して、pandasで列に追加する
      • フォロワーID
      • フォロワー数
      • フォロー数
    • 最後にCSVでエクスポートする

中身のコードはこちらです。


import tweepy
import os
import pandas
import time

search_id = "never_be_a_pm" #ツイッターのID
df = pandas.read_csv('default.csv', index_col=0)
count = 0
skip = 0

CONSUMER_KEY = "" #各種キーは、api.twitter.comから取得してください
CONSUMER_SECRET = ""
ACCESS_TOKEN = ""
ACCESS_TOKEN_SECRET = ""

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth ,wait_on_rate_limit = True)

def getFollowerIdsList(search_id): #引数にツイッターID、リスト形式でフォロワーのツイッターIDを返します  

    followers_ids = tweepy.Cursor(api.followers_ids, id = search_id, cursor = -1).items()
    followers_ids_list = []

    try:
        for followers_id in followers_ids:
            followers_ids_list.append(followers_id)

    except tweepy.error.TweepError as e:
        print (e.reason)

    return followers_ids_list;

def getFollowers(userID) #ユーザーIDを指定して、フォロワー数を返します:
    user = api.get_user(userID)
    followersCount = user.followers_count
    return followersCount

def getFollowings(userID): #ユーザーIDを指定して、フォロー数を返します
    user = api.get_user(userID)
    followingCount = user.friends_count
    return followingCount

if __name__ == "__main__":

    followerIdsList = getFollowerIdsList(search_id)
    followersCount = len(followerIdsList)
    for followerId in followerIdsList:
        try:
            userid = api.get_user(followerId).screen_name
            followers = getFollowers(followerId)
            followings = getFollowings(followerId)
            se = pandas.Series([userid, followers, followings],['userid','followers','followings'])
            print(se)
            count += 1
            print("{}%".format(round((count + skip) / followersCount)))
            df = df.append(se, ignore_index=True)
        except:
            print("Failed to retrieve user...retry")
            skip += 1
            print("{}%".format(round((count + skip) / followersCount)))
            time.sleep(10)
    df.to_csv("{}.csv".format(search_id)) # pandasでcsvに保存する

 

APIからデータを取ってきているときは、こんな感じになります。

取得したCSVはこんな感じになりました。

 

  • このエントリーをはてなブックマークに追加
  • Pocket

人気の記事