やりたいこと
指定した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”)から取得するようにしています。