初学者のそこの君に!!Selenium の基本的使い方徹底解説!!
はじめに
インターンで働くことになって初めての業務がSeleniumを使用してWebスクレイピングを自動で行うスクリプトの作成だったのでSeleniumのSの字も知らなかった僕がどのように今回、学習を行なっていったかをいつかの自分のために残そうと思いました!もしよかったらチートシートとしてお使いください!
開発環境
*開発言語 Python3
*使用エディタ VSCode
*Selenium 4.17.2
*ChromeDriver
*Chrome
Seleniumとは
SeleniumというのはWebアプリケーションのテストを自動化するためのパッケージです。ブラウザを操作して人間の操作をシミュレートするために用いられます。そのためスクレイピングとの相性がよく今回スクレイピングツールを開発するために使用しました。
環境構築
1.Pythonのインストール
はじめに今回はPythonで開発を進めていくのでPythonをインストールしていきます。
Homebrewを使用してvscodeのターミナルでコマンドを実行させます。
brew install python
versionを確認したい場合は以下のコマンドを入力してください。
python3 --version
2.Seleniumのインストール
次にSeleniumのインストールになります。Pythonを導入した時と同じようにターミナルでコマンドを実行してください。
pip install selenium
ダウンロードの確認は以下のコマンドから
python3 -c "import selenium; print(selenium.__version__)"
3.WebDriverのインストール
seleniumはweb上で操作するパッケージですが、webdriverがないと動作しないのでここで導入します。今回はChromeで実装しようと思うのでChromeWebDriverをインストールします。pipでバージョンを指定してインストールするコマンドは、下記の通りです
pip install chromedriver-binary==<ChromeDriverバージョン番号>
今回の例では、下記のコマンドとなります。
pip install chromedriver-binary==89.0.4389.23
これらの初期インストールを終えたら次はVScodeでの実装に移っていきます。
Seleniumの基本操作
1,Seleniumでの基本セットアップ
以下は、ChoromeDriverを使用してブラウザを起動し、指定したURLにアクセスする基本コードです。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import chromedriver_binary # ChromeDriverのパスを設定
# ChromeDriverのサービスを作成
service = Service()
# WebDriverを起動
driver = webdriver.Chrome(service=service)
# 指定したURLにアクセス
driver.get("https://example.com")
# ブラウザを閉じる
driver.quit()
2,要素の取得
Webページ上の要素を取得するにはfind_element
またはfind_elements
を使います。
IDで要素を取得する。
element = driver.find_element(By.ID, "example-id")
print(element.text)
クラス名で要素を取得する
element = driver.find_element(By.CLASS_NAME, "example-class")
print(element.text)
CSSセレクタで要素を取得する
element = driver.find_element(By.CSS_SELECTOR, ".example-class > a")
print(element.text)
複数の要素を取得する
elements = driver.find_elements(By.TAG_NAME, "p")
for elem in elements:
print(elem.text)
3,要素にアクションをつける。
所得したアクションに対して、クリックやテキスト入力といったアクションを実行することができます
クリックする
button = driver.find_element(By.ID, "submit-button")
button.click()
テキストを入力する
input_field = driver.find_element(By.NAME, "search")
input_field.send_keys("Selenium")
テキストをクリアする
input_field.clear()
4,Webページのスクリーンショットを保存する。
スクレイピングの途中経過をテストとして保存したり、結果を保存したりするためにスクリーンショットを保存することができます。
driver.save_screenshot("screenshot.png")
5,ページ全体をスクロールする。
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
6,明示的な待機
要素がロードするされるまで待機するには、SeleniumのWebDriverWait
を使用します。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10) # 最大10秒待機
element = wait.until(EC.presence_of_element_located((By.ID, "example-id")))
print(element.text)
最後に
これでSeleniumの基本的な使い方は以上になります。大抵のことはここからコピペして対処できるはずです。(保証はしません((()実際のWebサイトをスクレイピングするコードを書く際に困った時があったら見返してくださると嬉しいですし自分用の備忘録としても残しておきます。またスクレイピングを行う際は、Webサイトの利用規約を遵守し、倫理的な心がけをするようにしてください。
Discussion