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

Instagramからフォロワー数を自動で取得する方法(python)

やりたいこと

指定したInstagramアカウントから、フォロワー数、フォロー数、投稿数、プロフィール画像を取得したい。
今回は、selenium + pythonを使って実装してみる。

やること

対象アカウント

下記のアカウントから取得ができるかを試してみる。
https://www.instagram.com/nozomisasaki_official/

出力先

csvに出力する。
フォーマットは、
++++++++++++++++++++
日付,フォロワー数,フォロー数,いいね数,プロフィールURL
++++++++++++++++++++
とする。

前提条件

selenium、pythonの設定ができていること。
できていない方はこちらから設定ができます。
MacでSeleniumを動かしてみる!【初心者向け】

実装方法

# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# ブラウザを開く
driver = webdriver.Chrome(executable_path='./driver/chromedriver')
driver.get("https://www.instagram.com/nozomisasaki_official/")

# プロフィールURLの取得
elem1 = driver.find_elements_by_class_name('_6q-tv')
print('profile url: ' + elem1[0].get_attribute("src"))

# フォロワー情報の取得
elem2 = driver.find_elements_by_class_name('g47SY')
print('post: ' + elem2[0].text)
print('follower: ' + elem2[1].get_attribute("title"))
print('follow: ' + elem2[2].text)
followers = [
    'nozomisasaki_official',
    elem2[0].text,
    elem2[1].get_attribute("title"),
    elem2[2].text,
    elem1[0].get_attribute("src")
]

# csvに書き込み
with open('./csv/' + dt_now.strftime('%Y-%m-%d') + '.csv', 'a') as file:
    writer = csv.writer(file, lineterminator='\n')
    writer.writerow(followers)

# ブラウザを終了
driver.close()

実行結果

$ python sample.py
profile url: https://scontent-nrt1-1.cdninstagram.com/v/t51.2885-19/s320x320/24175048_1706810412710767_1281070886199230464_n.jpg?_nc_ht=scontent-nrt1-1.cdninstagram.com&_nc_ohc=T7O907LWP4YAX9bD-GE&oh=a67a545e116cfd4b72cc7ecb7fc4b67d&oe=5F88B1F7
post: 2078
follower: 4,410,390
follow: 1

まとめ

データの取得は、主に下記部分で行なっています。

print('profile url: ' + elem1[0].get_attribute("src"))
print('post: ' + elem2[0].text)
print('follower: ' + elem2[1].get_attribute("title"))
print('follow: ' + elem2[2].text)

ポイントとしては、Instagramの画面上だと、1万フォロワーを超えた場合、仮に、10,010人だったとしても、1万人と表示されてしまいます。そのため、htmlのテキストから取得するのではなく、要素のtitleに細かい人数まで入っているので、elem2[1].get_attribute(“title”)から取得するようにしています。