seleniumは、Pythonを使ってWebブラウザを自動で操作できる強力なライブラリです。自動化ツールとして広く使われ、ブラウザ上でのフォーム入力、クリック操作、スクリーンショットの取得、さらにはWebアプリケーションの自動テストなど、多岐にわたる操作を効率的に自動化できます。この記事では、Pythonとseleniumを使ったWeb操作の自動化方法について基本的なステップを解説します。

seleniumとは?

seleniumは、ブラウザの自動操作を行うためのオープンソースライブラリです。Python、Java、C#などの言語で使用可能ですが、この記事ではPythonでの利用方法を中心に紹介します。seleniumを使うことで、以下のようなWeb操作を自動化できます。

  • フォームの自動入力
  • ボタンのクリック
  • ページのスクロール
  • スクリーンショットの取得
  • Webアプリケーションの自動テスト 主なブラウザ(Chrome、Firefox、Edge、Safari)に対応しており、それぞれに対応するWebDriverを使ってブラウザを操作します。

seleniumのインストールとセットアップ

seleniumのインストール

まず、seleniumライブラリをインストールします。以下のコマンドをターミナルで実行してください。

pip install selenium

WebDriverの準備

seleniumでは、各ブラウザに対応したWebDriverを使ってブラウザを操作します。例えば、Google Chromeを操作するにはChromeDriverを使用します。以下は、ChromeDriverのインストール方法です。

  1. ChromeDriver公式サイトから、Chromeのバージョンに対応したChromeDriverをダウンロードします。
  2. ダウンロードしたファイルを適切なフォルダに解凍し、そのパスを環境変数に追加するか、後述のコード内で指定します。 Firefoxを使う場合は、同様にgeckodriverを準備します。

基本的なブラウザ操作

ここでは、seleniumを使ってChromeブラウザを起動し、指定したURLを開く基本的な操作を見ていきます。

from selenium import webdriver
# ChromeDriverのパスを指定してブラウザを起動
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
# 指定したURLを開く
driver.get('https://www.example.com')
# ブラウザを終了
driver.quit()
  • webdriver.Chrome():Chromeブラウザを起動します。executable_pathでChromeDriverのパスを指定します。
  • driver.get(url):指定したURLを開きます。
  • driver.quit():操作が終わったらブラウザを閉じます。 これだけで、PythonからChromeを自動操作してWebページを開けるようになりました。

Web要素の操作

次に、seleniumを使ってWebページ上の要素を取得し、操作する方法を見ていきます。主な操作として、テキストの入力やボタンのクリックなどがあります。

要素の検索

Webページの要素(ボタンや入力フォームなど)を取得するには、seleniumのfind_elementメソッドを使用します。次のコードは、特定の要素をIDで取得する例です。

# 要素をIDで検索
search_box = driver.find_element('id', 'search')
# 要素にテキストを入力
search_box.send_keys('`Python`自動化')
  • find_element('id', 'search'):HTML要素をIDで検索します。その他にも、nameclass_namexpathなどで要素を検索できます。

フォームの自動入力とボタンのクリック

以下は、フォームにテキストを入力し、送信ボタンをクリックする例です。

# 検索ボックスにテキストを入力
search_box = driver.find_element('name', 'q')
search_box.send_keys('selenium `Python`')
# 検索ボタンをクリック
search_button = driver.find_element('name', 'btnK')
search_button.click()

ここでは、Googleの検索フォームに"seleniumPython"と入力し、検索ボタンをクリックする操作を自動化しています。

ページ遷移後の処理

ページ遷移後、操作対象の要素がロードされるまで待つ必要がある場合があります。このとき、WebDriverWaitを使って要素が表示されるのを待機します。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 指定の要素が表示されるまで最大10秒間待機
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'resultStats'))
)

このコードでは、Googleの検索結果ページで、検索結果の統計情報(ID: resultStats)が表示されるまで最大10秒間待機します。

その他の自動操作

スクロール操作

ページの下部にある要素にアクセスしたい場合、スクロールを自動化する必要があります。以下は、ページをスクロールする例です。

# ページの最下部までスクロール
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

execute_script()メソッドを使うと、JavaScriptを実行してページ操作が可能です。

スクリーンショットの保存

操作しているページのスクリーンショットを自動で保存することもできます。

# スクリーンショットを保存
driver.save_screenshot('screenshot.png')

自動化の応用例

seleniumの基本的な操作を覚えたら、さまざまな自動化タスクに応用できます。以下はいくつかの応用例です。

6.1. ログインの自動化

ログインフォームを自動入力して、ログイン処理を自動化することができます。

# ユーザー名とパスワードを入力してログイン
username = driver.find_element('name', 'username')
password = driver.find_element('name', 'password')
username.send_keys('your_username')
password.send_keys('your_password')
# ログインボタンをクリック
login_button = driver.find_element('name', 'login')
login_button.click()

6.2. Webスクレイピング

Webスクレイピングとは、Webページから特定の情報を取得する作業です。seleniumを使うと、動的に生成されるコンテンツ(JavaScriptで後から読み込まれる要素など)も簡単に取得できます。

# 取得したページのHTMLを取得
page_source = driver.page_source
print(page_source)

このコードで、ページのHTML全体を取得 し、解析することができます。

まとめ

seleniumを使うことで、Pythonから簡単にWebブラウザを自動操作できるようになります。フォーム入力やボタンのクリックなどの操作を自動化できるだけでなく、スクロールやスクリーンショットの保存、ページ遷移後の要素待機など、さまざまな操作も可能です。これにより、Webサイトのテスト自動化や日常的なWeb作業の効率化が図れます。 ぜひseleniumを使って、ブラウザ操作を自動化し、日々の作業をさらに効率的にしてみてください。