見出し画像

151 インスタで好きなインスタグラマーを自動検索!簡単スクリプトで効率化#PyAutoGUI【2024年版】#業務自動化

こんにちは!TechCommitメンバーの友季子です♬
今回は、Instagramの自動化についてまとめてみました。
PyAutoGUIを用いて、Instagramの検索機能を使ってフォローしているインスタグラマーのページに自動で遷移するスクリプトを紹介します。


1. はじめに

1.1 出来ること

PythonとSelenium、PyAutoGUIを組み合わせてInstagramの操作を自動化する方法をご紹介します。特に、ログインから検索、特定のページへの遷移までを自動化するスクリプトを作成しました。このスクリプトを使えば、手動で行う面倒な作業を自動化し、効率化することができます。

1.2 イメージ動画

2. スクリプトの全体の流れ

2.1 初期設定

  • ブラウザの起動: Seleniumを使用してChromeブラウザを起動し、Instagramのログインページにアクセスします。

2.2  ログインプロセス

  • ページ読み込み待機: ページが完全に読み込まれるまで少し待機します(time.sleep(5))。

  • ユーザー名とパスワードの入力:

    • ユーザー名フィールドを動的に待機して見つけ、ユーザー名を入力します。

    • パスワードフィールドを動的に待機して見つけ、パスワードを入力します。

  • ログインボタンのクリック: ログインボタンを動的に待機してクリックします。

  • 「情報を保存」ボタンのクリック: 「情報を保存」というボタンが表示された場合、それをクリックします。

3. 必要な準備

3.1 必要なライブラリのインストール

まず、Pythonの環境が必要です。まだインストールしていない場合は、Python公式サイトからダウンロードしてください。

PyAutoGUIのライブラリをインストール

pip install selenium pyautogui
#PyAutoGUIのライブラリをインストール

3.2 ChromeDriverのダウンロード

SeleniumでChromeブラウザを操作するために、ChromeDriverの設定をなさってください。
▽参考note

4. サンプルコードのご紹介

Instagramにログインし、虫眼鏡アイコンをクリックしてフォローしているインスタグラマーのページに自動で遷移するものです。

※IDとPWはご自身のものを入力してくださいね。

4.1 全体コード

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pyautogui

# ChromeDriverの自動管理でブラウザを起動
driver = webdriver.Chrome()
driver.get("https://www.instagram.com/?locale=ja_JP")

# Instagramのタイトルを出力
print(driver.title)

# ページが完全に読み込まれるのを待つ
time.sleep(5)

try:
    # 1. ユーザー名フィールドの入力(動的待機を追加)
    username_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'input[name="username"]'))
    )
    username_field.clear()
    username_field.send_keys("YOUR_USERNAME")  # ここにユーザー名を入力

    # 2. パスワードフィールドの入力(動的待機を追加)
    password_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'input[name="password"]'))
    )
    password_field.clear()
    password_field.send_keys("YOUR_PASSWORD")  # ここにパスワードを入力

    # 3. ログインボタンのクリック(動的待機を追加)
    login_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[type="submit"]'))
    )
    login_button.click()
    print("ログインボタンをクリックしました")

    # 4. 「情報を保存」というボタンを探してクリック
    try:
        save_info_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), '情報を保存')]"))
        )
        save_info_button.click()
        print("「情報を保存」をクリックしました")
    except Exception as e:
        print(f"「情報を保存」ボタンのクリックに失敗しました: {e}")

    # ログイン処理の確認のために少し待機
    time.sleep(20)

    # マウスを左上から少しずらした位置に移動し、ゆっくり下に移動しながらクリック
    start_x, start_y = 45, 20  # 左上から少しずれた位置
    pyautogui.moveTo(start_x, start_y, duration=1)  # 開始位置に移動

    # 下に少しずつ移動しながらクリック
    for y_offset in range(0, 406, 10):  # 406ピクセルまで10ピクセルずつ下に移動
        pyautogui.moveTo(start_x, start_y + y_offset)
        time.sleep(0.1)  # 移動の合間に少し待機

    # 最後にクリック
    pyautogui.click()
    print("8センチ下の位置でクリックしました")
    
    # 最初の30秒待機
    time.sleep(30)
    
    # 少し右に移動してクリック
    pyautogui.move(200, 0, duration=0.5)  # 現在の位置から右に移動
    pyautogui.click()
    print("少し右の位置でクリックしました")
    
    # 少し下に移動してクリック
    pyautogui.move(0, 100, duration=0.5)  # 現在の位置から下に移動
    pyautogui.click()
    print("少し右に移動後、さらに下に移動してクリックしました")

    # 最後に30秒間待機
    time.sleep(30)

except Exception as e:
    print(f"エラーが発生しました: {e}")

finally:
    # ブラウザを閉じる
    driver.quit()

4.2 解説コード

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pyautogui

# ChromeDriverの自動管理でブラウザを起動
driver = webdriver.Chrome()

# Instagramのページを開く
driver.get("https://www.instagram.com/?locale=ja_JP")

# Instagramのタイトルを出力
print(driver.title)

# ページが完全に読み込まれるのを待つ
time.sleep(5)

try:
    # 1. ユーザー名フィールドの入力(動的待機を追加)
    # usernameフィールドが表示されるまで待機し、見つけたらテキストを入力する
    username_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'input[name="username"]'))
    )
    username_field.clear()  # フィールドの内容をクリア
    username_field.send_keys("yukiko_smile_1026")  # ユーザー名を入力

    # 2. パスワードフィールドの入力(動的待機を追加)
    # passwordフィールドが表示されるまで待機し、見つけたらパスワードを入力する
    password_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'input[name="password"]'))
    )
    password_field.clear()  # フィールドの内容をクリア
    password_field.send_keys("hogehogehoge")  # パスワードを入力

    # 3. ログインボタンのクリック(動的待機を追加)
    # submitタイプのボタンがクリック可能になるまで待機し、見つけたらクリックする
    login_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, 'button[type="submit"]'))
    )
    login_button.click()  # ログインボタンをクリック
    print("ログインボタンをクリックしました")

    # 4. 「情報を保存」というボタンを探してクリック
    try:
        # 情報を保存ボタンがクリック可能になるまで待機し、見つけたらクリックする
        save_info_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), '情報を保存')]"))
        )
        save_info_button.click()  # 情報を保存ボタンをクリック
        print("「情報を保存」をクリックしました")
    except Exception as e:
        print(f"「情報を保存」ボタンのクリックに失敗しました: {e}")

    # ログイン処理の確認のために少し待機
    time.sleep(20)

    # マウスを左上から少しずらした位置に移動し、ゆっくり下に移動しながらクリック
    start_x, start_y = 45, 20  # 左上から少しずれた位置
    pyautogui.moveTo(start_x, start_y, duration=1)  # 開始位置に移動

    # 下に少しずつ移動しながらクリック
    for y_offset in range(0, 406, 10):  # 406ピクセルまで10ピクセルずつ下に移動
        pyautogui.moveTo(start_x, start_y + y_offset)  # マウスを移動
        time.sleep(0.1)  # 移動の合間に少し待機

    # 最後にクリック
    pyautogui.click()  # クリックを実行
    print("8センチ下の位置でクリックしました")
    
    # 最初の30秒待機
    time.sleep(30)
    
    # 少し右に移動してクリック
    pyautogui.move(200, 0, duration=0.5)  # 現在の位置から右に移動
    pyautogui.click()  # クリックを実行
    print("少し右の位置でクリックしました")
    
    # 少し下に移動してクリック
    pyautogui.move(0, 100, duration=0.5)  # 現在の位置から下に移動
    pyautogui.click()  # クリックを実行
    print("少し右に移動後、さらに下に移動してクリックしました")

    # 最後に30秒間待機
    time.sleep(30)

except Exception as e:
    print(f"エラーが発生しました: {e}")

finally:
    # ブラウザを閉じる
    driver.quit()  # ブラウザを閉じて終了

4.3 実行方法

  1. 上記のスクリプトをコピーして、Pythonファイル(例: instagram_bot.py)として保存します。

  2. コマンドラインまたはターミナルを開き、保存したファイルのディレクトリに移動します。

  3. 以下のコマンドを実行してスクリプトを実行します。

python instagram_bot.py

5. まとめ

このスクリプトを使用すると、Instagramの操作を自動化して手間を省くことができます。ぜひ試してみて、自分の用途に合わせてカスタマイズしてみてください!😊📱

また最近、より深く学びたい方向けに記事も書いたので、良かったら読んでくださいね✨

また励みになるので、ちょっとでも役にたったらイイネとフォローしてもらえたらハッピーです💗


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?