Python

【フォロワーを増やそう!】instagramのいいね操作を自動化してみた(Python / Serenium)

自動化しようと思った背景

知り合いがインスタ運用をしており、毎日いいね周りといって空き時間にポチポチしていたので、これは自動化した方が時間効率よくないか?と思ってネットで調べてみることに。
すると、きちんと効果があるようで、既存ツールもあるみたいですが、Pythonの勉強がてら作成してみることにしました。

Instagramのいいねの効果

簡潔にいうと、フォロワーを増やすこと が見込めるようです。

その理由は、いいねされた時の行動を振り返ってみるとイメージしやすいです。
まず、いいね することで いいね された側(ユーザー)には通知が届きます。
ユーザーがその通知を見て、プロフィールに飛んでくることで、過去投稿の確認やストーリーの確認がフォローをする動作に繋がっているため、いいね周りはフォロワーを増やすために効果的な活動になっているようです。

  1. いいねをする

    自分)フォロワーになって欲しいユーザーにアクションする。

  2. ユーザーがあなたに気づく

    相手)いいねされたユーザーは自分のことを知り、プロフィールを確認する。

  3. フォローされる

    相手)自分のプロフィールを見たユーザーが、フォローしてくれる。

正直、自分も普段インスタをしている時に、自然とやってしまっている動作だなと思ってしまいましたね。

instagramの利用規約の確認

自動いいねを作るにあたってinstagramの利用規約を確認したところ、、、

不正な方法を用いて、アカウントの作成、情報へのアクセス、または情報の取得を試みることは禁止されています。
これには、弊社から明示的な許可を得ることなく、自動化された手段を用いてアカウントを作成したり、情報を取得したりする行為が含まれます。

許可なくアカウントの作成、情報の取得を自動化しないことが規約に記載されていたので今回の自動いいね操作自体は該当しなそうですね。

では、実際にいいね操作の自動化について紹介していきます。

動作検証環境

今回の動作検証環境は以下の通りです。

作業エディタ:VSCode
OS:MacOS 11.5
Pythonバージョン:Python3.9.5
WebDriverバージョン:92.0.4515 (*)
Chromeバージョン:92.0.4515 (*)
※(*):ソース内で最新バージョンを取得するため気にせずOK!

初めての方へ

以前、Seleniumuの入門として書いた記事がありますので参考にしてみてください。

Selenium活用
【Python】seleniumを使ってwebサイトの自動操作してみた -ブラウザ起動編-本記事では、selenium(セレニウム)を利用した簡単なweb自動操作をまとめていきます。 まずは、webブラウザの起動例をもとに動...
google検索結果から情報取得
【Python】SeleniumでGoolge検索結果から情報取得してみた本記事では、selenium(セレニウム)を利用した簡単なweb自動操作をまとめていきます。 今回は、seleniumuでGoogle...

instagram 自動いいねツール作成

今回は、処理5つのステップ分けて、ご紹介していきます。

  1. webブラウザを起動
  2. instagramにアクセス
  3. instagramにログイン
  4. タグ検索
  5. いいね操作

利用する設定値

本記事で利用した主な設定値は下記の4つになります。
処理ステップ内に記載があった場合は、事前に設定しておく値だとご認識下さい。

URL = "https://www.instagram.com"
LOGIN_ID = '*****'
PASSWORD = '*****'
KEYWORD_TAG = '〇〇好きな人と繋がりたい'

本記事ではサンプルコードを記載しておりますが、ご利用される場合は、当サイトでは一切の責任を負いかねますので、ご理解の上、ご活用ください。

Step1. webブラウザを起動

サンプルコード

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# ブラウザを起動
browser = webdriver.Chrome(ChromeDriverManager().install())

Step2. Instagramにアクセス

サンプルコード

URL = "https://www.instagram.com"

# 指定のURLにアクセス
browser.get(URL + '/accounts/login/')

webスクレイピング時に気をつけなければいけない「robots.txt」を確認してみると、ルートへのアクセスがNGのようだったのでログイン画面からログインすることにしています。

ユーザーエージェント: *
禁止:/

Step3. ログイン処理

作成途中に何度かつまずいたのですが、Web Driverの待機処理を考慮することを意識すると安定稼働につながると思います。

なぜならば、Seleniumのエラーの原因は、指定した要素が見つからないことが大半を占めているからです。

そんなことを意識しながらコードを見てもらえればと思います。

サンプルコード

from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

# ログイン処理
def function_login() :
    # 電話、メールまたはユーザー名のinput要素が読み込まれるまで待機(最大10秒)
    elem_user_id_input = WebDriverWait(browser, 10).until(
        EC.visibility_of_element_located((By.NAME, "username")))
    # パスワードのinput要素
    elem_password_input = browser.find_element_by_name("password")

    if elem_user_id_input and elem_password_input :
        # ログインID入力
        elem_user_id_input.send_keys(LOGIN_ID)
        # パスワード入力
        elem_password_input.send_keys(PASSWORD)
        # ログインボタンクリック
        elem_login_btn = WebDriverWait(browser, 10).until(
            EC.visibility_of_element_located((By.XPATH, '//*[@id="loginForm"]/div/div[3]/button')))

        # ボタン押下のアクション
        actions = ActionChains(browser)
        actions.move_to_element(elem_login_btn)
        actions.click(elem_login_btn)
        actions.perform()

        # ログイン処理待機(適当)
        sleep(5)

        # 遷移後のURLでログイン可否をチェック
        print(now_time() + 'instagramにログインしました')
        return True
    else :
        print(now_time() + 'ログインに失敗しました')
        False

# 実行処理
LOGIN_ID = '*****'
PASSWORD = '*****'
function_login()

Step4. タグ検索処理

タグ検索の処理は、通常の操作であれば1つ目の操作イメージをされるかと思いますが、処理が短くて済む2つ目の処理方法で進めることにしました。

1. 検索入力欄に検索キーワードを入力してタグ検索結果画面にアクセスする。
2. タグ検索結果先のURLにアクセスする。

サンプルコード

# 任意のタグ検索を実施
def function_search(keyword_tag) :
    browser.get(URL + '/explore/tags/' + keyword_tag)
    print(now_time() + keyword_tag + ' でタグ検索しました')
    sleep(3)

# 実行処理
KEYWORD_TAG = '〇〇好きな人と繋がりたい'
function_search(KEYWORD_TAG)

Step5. いいね操作処理

最新の投稿に対して、いいねができるように10個目の投稿を開くようにしています。

サンプルコード

# いいね処理
def function_niceClick() :
    # 最新の投稿を開く
    elem_first_target = WebDriverWait(browser, 30).until(
        EC.visibility_of_all_elements_located((By.CLASS_NAME, 'KL4Bh')))[9]
    actions = ActionChains(browser)
    actions.move_to_element(elem_first_target)
    actions.click(elem_first_target)
    actions.perform()
    sleep(2)

    # いいねをしてない場合のみ、いいねをクリック
    elem_target_nice_text = browser.find_elements_by_class_name('_8-yf5')
    for e in elem_target_nice_text:
        if (e.get_attribute('aria-label') != 'いいね!') :
            continue
        else :
            browser.find_element_by_class_name('fr66n').click()
    sleep(2)

# 実行処理
function_niceClick()

実行結果

ここまでのソースコードで実際に実行してみると、ブラウザが起動するとこからいいねするまでが確認できると思います。

instagram_自動いいね実行結果

参考サイト

まとめ

本記事では、自動でインスタグラムの最新投稿に対していいねをする方法について紹介しました。次の記事では、繰り返し実行する方法をご紹介できればと思います。
インスタグラムのいいねの効果について理解した上で、フォロワーを少しずつ増やして行けたらいいですね!




ABOUT ME
lusk
EC歴3年、23歳。 通販カート会社に2018年新卒で入社し、エンジニア、プロジェクトマネージャー、新規事業の立ち上げを経験。 仕事を楽しくするためのツール作成や業務改善の仕組みを作ったりしてます。