概要
Selenium はブラウザ操作をエミュレーションするツールです。Javascript を利用して動的にコンテンツを生成しているサイトのスクレイピングやログインフォームの自動ログインなどに利用できます。
導入方法
ブラウザを動作させるので、GUI 環境 である必要があります。 Selenium を使用したスクレイピングを行うには、次の3つが必要になります。
- Selenium
- Chromium Driver
- Chromium (Google Chrome で可)
Chromium Driver は Selenium
とブラウザを中継するドライバです。
確認した環境
- Windows 10 64bit
- Google Chrome 87.0.4280.141
- Python 3.8.3
Selenium のインストール
pip install selenium
でインストールできます。
Chromium Driver のインストール
まず、使用しているブラウザのバージョンを確認してください。ツールバーのメニューから「ヘルプ」を選択することで Google Chrome のバージョンを確認できます。
今回の例だと、バージョン88になります。バージョンを確認できたら、対応するバージョン及び OS の ChromeDriver を Downloads – ChromeDriver からダウンロードします。
- chromedriver_linux64.zip: Linux
- chromedriver_mac64.zip: Mac
- chromedriver_win32.zip: Windows
ダウンロードして解凍すると、chromedriver.exe
が入っているので、これを適当な場所 (例: F:\chromedriver\88
) に配置します。
配置したら、このディレクトリの場所 (例: F:\chromedriver\88
) を環境変数 Path
に追加します。
環境変数を設定したら、一度 PC を再起動してください。以上で準備は完了です。
Selenium を試してみよう
Google のトップページにアクセスし、検索ボックスに「ChromeDriver」と入力して検索を行うデモコードを紹介します。 下記コードを実行すると、ブラウザが立ち上がり動作が開始されると思います。動作中はマウスやキーボード操作は行わないようにしてください。
import time
from selenium import webdriver
driver = webdriver.Chrome()
# Google にアクセスする。
driver.get("https://www.google.com/")
# Web ページの取得を待機する。
time.sleep(3)
# 検索ボックスの要素を取得する。
search_box = driver.find_element_by_name("q")
# 検索ボックスに「ChromeDriver」と入力する。
search_box.send_keys("ChromeDriver")
# 検索をクリックする。
search_box.submit()
time.sleep(5)
driver.quit()
ヘッドレスモードで実行する
デフォルトでは実行ともにブラウザが起動しますが、バックグラウンドで実行することもできます。
WebDriver
オブジェクトを作成する際にオプションを渡します。
以下は Yahoo!ニュース からトップページに表示されるニュース一覧を取得する例です。
import time
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)
# Yahoo!ニュース にアクセスする。
driver.get("https://news.yahoo.co.jp/")
# Web ページの取得を待機する。
time.sleep(2)
# ニュース一覧を取得する。
topics = driver.find_elements_by_css_selector("#uamods-topics li a")
for topic in topics:
title = topic.text
url = topic.get_attribute("href")
print(title, url)
driver.quit()
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
というエラーが出た場合は、先程の環境変数の設定が上手くできていません。パスが合っているかどうかを確認しましょう。
コメント