Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その2:ログインしてページ遷移

shuzo-kino.hateblo.jp
の続き。
今度は、よくあるログインページを経由してトップページに遷移する方法について。

実際のところ

実行環境

スクリプト

ログインページ"LOGINPAGE"に

  • name「userid」がついたユーザー名フォーム
  • name「userpass」がついたパスワードフォーム
  • class「btn-login」がついたログインボタン

があるという想定で、これに入力しトップページ"TOPPAGE"に遷移するスクリプトは以下の通り。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# ブラウザの場所は絶対PATHとして指定
CHROME_BIN    = "/usr/bin/chromium-browser"
CHROME_DRIVER = "/usr/lib/chromium-browser/chromedriver"

# LogIn Info
USER_ID   = 'YOURID'
USER_PASS = 'YOURPASS'

# TargetURL
LOGINPAGE = 'YOURLOGINSPAGE'
TOPPAGE     = 'YOURTOPPAGE'

# 実行オプション
options = Options()
options.binary_location = CHROME_BIN
options.add_argument("--remote-debugging-port=9696")  # sshでやるなら
options.add_argument('--headless')


# 実行インスタンス
print("start\r\n")
driver = webdriver.Chrome(CHROME_DRIVER, options=options)
time.sleep(3)

# URLに接続
print("Connect URL...\r\n")
driver.get(LOGINPAGE)

# 読み込み用の待機。性能に自信があるとかでない限り、やった方が無難。
time.sleep(3)

# ID/PASSを入力
print("Enter ID/PASS\r\n")
id = driver.find_element_by_name("userid")
id.send_keys(USER_ID)
password = driver.find_element_by_name("userpass")
password.send_keys(USER_PASS)

time.sleep(1)

# ログインボタンをクリック
print("Click Button\r\n")
login_button = driver.find_element_by_class_name('btn-login')
login_button.click()

# サイト内で他の画面に遷移させたければ
print("NextPage....\r\n")
driver.get(TOPPAGE)
time.sleep(5)

# 結果を変数に格納
html = driver.page_source

# 何かしら実行。今回はプリントするだけ
print(html)

# インスタンスを片付ける。整理整頓は基本。
driver.quit()

参考もと

qiita.com