ます。今回は、指定したアカウントに対して、どのアカウントがフォロワーになっているか、抽出するためのプログラムを紹介したいと思います。
環境構築
今回は、selenium + pythonで実施します。手元に環境がない場合は、下記の記事から環境構築を進めてみてください!
ローカル環境で、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ファイルに、アカウント名が書き出されていきます。
簡単ですね。ぜひお試しください。