#はじめに
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
#プログラミング
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フレームワーク、サーバー周りも勉強中。