Selenium入門 Pythonでブラウザを自動化したい方必読!

SeleniumとChromeDriver

SeleniumはWebブラウザで行うクリック操作やキーボード入力などをプログラム上から自動で操作できるようにしたライブラリ
ChromeDriverはChromeブラウザをプログラムで動かす為のドライバーです。
この2つを使うことで、SeleniumでChromeブラウザを操作してログインすることが可能です。
またこの2つを組み合わせて使うことで、次のことが可能になります。

・スクレイピング
・ブラウザの自動操作(次へボタンや購入ボタンなどを自動で押すなど)
・システムの自動テスト
・非同期サイトのスクレイピング

Seleniumのインストールは次のようにターミナルおよびコマンドプロントで打ち込み実行することで、インストール出来ます。

pip install selenium

Chrome Driverのインストールは下記リンクから飛べます。
Chrome Driver インストールリンク
その後、お使いのChromeのバージョンに適したdriverを入れる必要があります。
例えば、chromeのバージョンが76.0の場合はこちらのdriverをインストールします。
※テキストに書かれたバージョンと異なる場合がございます。

またChromeのバージョンはMacの場合、メニューの『chrome』から『Google Chromeについて』で確認出来ます。

Chrome Driver インストールリンク

Seleniumの動作確認

まず初めに、最新のGoogle Chromeと、最新のChrome Driverをインストールしていることを確認してください。
※片方が最新でも、Seleniumが動作しない場合があります。
その後、次のプログラムを任意のテキストエディタやJupyter Notebookに打ち込んで実行してください。
気をつける部分としては、インストールしたChrome Driverの配置場所です。

下記プログラムの例では、Windowsの場合、Chrome DriverをC直下に配置しています。
Macの場合は、下記プログラムが保存されている場所に置いてあることを想定しています。
executable_path=”の”内に任意のパスを指定できるので、Desktopなりご自由に指定していただいて構いません。

また、よくあるエラーとして、chromedriverというファイル名を間違えて記述している場合もエラーになりますので、動作確認の場合は上記内容をよく確認してから実行してください。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys as keys

"""
※注意※
下記コードにて、MacとWindows両方のpathを設定しているので、
お使いのPCに合わせて不要なコードをコメントしてください。(コメントアウト)
"""

# Macの場合 (Chromedriveがこのプログラムを実行している同じ場所にある前提)
driver = webdriver.Chrome(executable_path="./chromedriver") # Windowsの方はこの行をコメントアウト    


# windowsの場合 (Cドライブ直下にchromedriver.exeがある前提)
driver = webdriver.Chrome(executable_path="C:\chromedriver.exe") # Macの方はこの行をコメントアウト


### 1.Webサイトにアクセスする
driver.get("https://aiacademy.jp/")

Seleniumよく使う操作メソッド

このセクションではSeleniumよく使う操作メソッドに関して説明します。

# テキストを入力する
driver.find_element_by_id("ID").send_keys("strings")
# テキストを取得する
driver.find_element_by_id("ID").text
# 属性を取得する
driver.find_element_by_id("ID").get_attribute("value")
# タイトルを取得する
driver.title
# ページのソースを取得する
driver.page_source
"""
find_element_by_xpath()を使用する際に、XPathの取得方法ですが、
Chromeであれば、右クリックを押して
検証 → Elementsの任意のhtmlタグを選択し、右クリックすると、
Copyというのがあるので、Copy▶ Copy selectorや︎Copy XPathが出てきますので、
Copy XPathをクリックすると、選択したタグのXPathの値が取得がコピーできます。
"""

# 要素を取得する
driver.find_element_by_class_name("classname") # classでの指定
driver.find_element_by_id("id") # idでの指定
driver.find_element_by_xpath("xpath") # xpathでの指定
# ある要素をクリックする
driver.find_element_by_xpath("XPATH").click()
# ある要素までスクロールする
element = driver.find_element_by_id("ID") # 適切なIDに変更してください。
actions = new Actions(driver)
actions.move_to_element(element)
actions.perform()
# ドロップダウンを選択したいとき
element = driver.find_element_by_xpath("xpath")
Select(element).select_by_index(indexnum) # indexで選択
Select(element).select_by_value("value") # valueの値
Select(element).select_by_text("text") # 表示テキスト
# 特定のURLでブラウザを起動する
driver.get("URL")
# 1つ前に戻る
driver.back()
# 現在のURLを取得する
driver.forward()
# ブラウザを更新する
driver.refresh()

まとめ

この章では、Seleniumのインストールと、基本的な操作メソッドを学びました。
これらを使いこなすことで、会員制サイトに自動でログインし、ログイン後のページをスクレイピングするなどといったことが可能になります。