物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

Chromeを使ってログインが必要なウェブサイトをスクレイピングする

Chromeを遠隔操作するタイプで動かすのが直感的で分かりやすかった。

qiita.com

まずは selenium をインストールする

pip install selenium

chromedriver-binaryをインストールする。https://pypi.org/project/chromedriver-binary/#history へアクセスして、自分のchromeと一致するバイナリを取得する。

当方の現在の環境は Chrome 84.0.4147.105 だったので、一番近い 84.0.4147.30.0 をインストールした

pip install chromedriver-binary==84.0.4147.30.0

使ってみる。

初期化

import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

ウェブページへ飛ぶ

driver.get("https://URL/")

ログインする

driver.find_element_by_id("username").send_keys("user")
driver.find_element_by_id("password").send_keys("pass")
driver.find_element_by_id("login").submit()

要素を指定する場合はchromeでF12で開ける画面のElementsで要素を右クリックし、Copy XPathで取得すると良い。

element=driver.find_element(By.XPATH ,r'XPATH')

#値を設定
element.send_keys("a")

#クリック
element.click()

#クリア
element.clear()

#テキスト出力
element.text()

find_elementできるまでのタイムアウトの設定は以下をfind_elementの前に書く。単位は秒。

driver.implicitly_wait(1)

とにかく待ちたい場合は

import time
time.sleep(10)