search
LoginSignup
18

More than 3 years have passed since last update.

posted at

【Googleログイン自動化】Python×seleniumでGoogleにログインする

はじめに

WebスクレイピングやWebクロールで、ログイン処理を自動化したい人向けです。
ここでは、Googleアカウントのログインの自動化について取り上げます。

環境

  • MacOS High Sierra 10.13.4
  • Python 3.7.1
  • chromedriver 2.45

準備

  • chromedriverこちらからダウンロードします。
    (Windowsの場合、ファイル名はchromedriver.exeとなります。)

  • Pythonファイルとchromedriverは、同じフォルダ内に置きます。
    (同じフォルダに置きたくない場合は、PATHを通すやり方もあります。)

seleniumのインストール

ターミナル上でpipを実行し、seleniumをインストールします。
※Windowsの場合は、コマンドプロンプト上で実行。

# 当方のMac
pip3 install selenium
# Windows
pip install selenium

プログラミング

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

def start_chrome():
    # chromedriverのPATHを指定(Pythonファイルと同じフォルダの場合)
    driver_path = './chromedriver'

    # Chrome起動
    #driver = webdriver.Chrome(driver_path)
    driver = webdriver.Chrome(executable_path=driver_path)
    driver.maximize_window() # 画面サイズ最大化

    # GoogleログインURL
    url = 'https://www.google.com/accounts?hl=ja-JP'
    driver.get(url)

    return driver

def login_google(driver):

    #ログイン情報
    login_id = "【GoogleアカウントのログインID(メールアドレス)を入力してください。】"
    login_pw = "【Googleアカウントのパスワードを入力してください。】"

    #最大待機時間(秒)
    wait_time = 30

    ### IDを入力
    login_id_xpath = '//*[@id="identifierNext"]'
    # xpathの要素が見つかるまで待機します。
    WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.XPATH, login_id_xpath)))
    driver.find_element_by_name("identifier").send_keys(login_id)
    driver.find_element_by_xpath(login_id_xpath).click()

    ### パスワードを入力
    login_pw_xpath = '//*[@id="passwordNext"]'
    # xpathの要素が見つかるまで待機します。
    WebDriverWait(driver, wait_time).until(EC.presence_of_element_located((By.XPATH, login_pw_xpath)))
    driver.find_element_by_name("password").send_keys(login_pw)
    time.sleep(1) # クリックされずに処理が終わるのを防ぐために追加。
    driver.find_element_by_xpath(login_pw_xpath).click()

if __name__ == '__main__':
    # Chromeを起動
    driver = start_chrome()

    # Googleにログイン
    login_google(driver)

実行

それぞれの環境でPythonファイルを実行してください。
(例)
Mac:ターミナル etc.
Windows:コマンドプロンプト、IDLE、etc.

解説

ほぼ、コメントに書いてある通りです。

IDとパスワードを入力するテキストボックスの要素は、それぞれのname要素を指定してます。
「次へ」のボタンの要素はxpathを指定してクリックしてます。

WebDriverWaitを使うことで、指定したxpathが画面に表示されるまで待機させます。

ですが、パスワードのクリックがなぜかうまくいきませんでした。
なので、仕方なく、time.sleep(1)を入れたという次第です。

結果

Pythonファイルを実行後、自動でGoogleアカウントでログインできればOKです。

参考

python × seleniumでID/PASS入力必要な画面に自動ログインしてみた

著者のプログラミングスキル

  • 2018年9月からPython独学スタート。
  • Pythonを使った個人開発(スクレイピング・クロール系)がメイン。
  • PHP, GAS, Amazon MWSAPI, Webフレームワーク、サーバー周りも勉強中。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
18