注目キーワード
  1. 技術
  2. 広告
  3. IDFA
  4. PHP
  5. WordPress

【2020年】Instagramアカウントのフォロワー情報を自動で取得する方法(python)

ます。今回は、指定したアカウントに対して、どのアカウントがフォロワーになっているか、抽出するためのプログラムを紹介したいと思います。

環境構築

今回は、selenium + pythonで実施します。手元に環境がない場合は、下記の記事から環境構築を進めてみてください!

MacでSeleniumを動かしてみる!【初心者向け】

ローカル環境で、seleniumを動かせる状態になったら、次を進めていきます。

フォロワー情報の取得プログラムの実装

下記のプログラムでフォロワーの取得ができます。

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
from bs4 import BeautifulSoup
import pandas as pd
import time
import random
import sys

def main():
    username = sys.argv[1]
    print('target account: ' + username)

    driver = webdriver.Chrome(executable_path='./driver/chromedriver')

    # ログインページに遷移する
    driver.get('https://www.instagram.com/accounts/login/?source=auth_switcher')

    # 2秒スリープ(待機)
    time.sleep(2)

    # ユーザ名、パスワードを入力してログイン
    id = driver.find_element_by_name("username")
    id.send_keys("ここにユーザIDを入れます")
    password = driver.find_element_by_name("password")
    password.send_keys("ここにパスワードを入れます")
    password.send_keys(Keys.RETURN)

    # 3秒スリープ(待機)
    time.sleep(3)

    # 対象アカウントのInstagramページにアクセス
    driver.get('https://www.instagram.com/' + username + '/')

    # 3秒スリープ(待機)
    time.sleep(3)

    # 画面上で、フォロワーのリンクをクリック
    follower_button = driver.find_elements_by_css_selector("li.Y8-fY")[1]
    follower_button.click()

    # 3秒スリープ(待機)
    time.sleep(3)


    # フォロワーの一覧は、ポップアップウインドウで表示されます
    dialog = driver.find_element_by_css_selector("div.isgrP")
    for i in range(200):
        driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", dialog)
        time.sleep(random.randint(500,1000)/1000)

    page_url = driver.page_source
    soup = BeautifulSoup(page_url,"lxml")
    elements = soup.find_all("a", {"class": "FPmhX notranslate _0imsa"})
    followers = []
    # 取得できたフォロワー名を配列にadd
    for value in elements:
        followers.append(value.text)

    # csvに書き出し
    df= pd.Series(followers)
    df.to_csv(username + '_follower_list.csv')
    driver.close()

if __name__ == '__main__':
    main()

ポイントは、コメントにも追記していますが、下記の流れで処理をしていきます。

・ログインページに遷移する

・2秒スリープ(待機)

・ユーザ名、パスワードを入力してログイン

・3秒スリープ(待機)

・対象アカウントのInstagramページにアクセス

・3秒スリープ(待機)

・画面上で、フォロワーのリンクをクリック

・3秒スリープ(待機)

・フォロワーの一覧は、ポップアップウインドウで表示されます

・取得できたフォロワー名を配列にadd

・csvに書き出し

画面が描画される前に、次の処理が動いてしまうことのないようスリープを間に挟むようにしています。

結果確認

$ python sample.py xxxxxx(アカウント名)

実行していくと、csvファイルに、アカウント名が書き出されていきます。
簡単ですね。ぜひお試しください。