「Webブラウザを使って毎日同じ作業の繰り返し。面倒だから自動化したい」―そんな望みをPythonで叶えることができます。
Seleniumというモジュールを使うことで、人が操作しているかのようにブラウザ操作を自動化して、いわゆる”Webスクレイピング”を行うことができます。
Webページを開く、フォームへの入力、検索の実行など、日々、私たちが行っている操作はSeleniumモジュールを使うことで、Pythonから出来てしまいます。
ここでは、PythonでWebブラザを自動化するための第1歩・Seleniumのモジュールのインストール方法と、Amazonでの検索を自動化する簡単な例を紹介します。
PythonでWebブラウザ操作を自動化するための準備:SeleniumとWebドライバのインストール
Webブラウザの操作をPythonで自動化するためには、以下の3個が必要になります。
- Webブラウザ
- Chrome、FireFox、Safariなど
- WebDriver
- Webブラウザを操作するためのドライバ(ライブラリ)
- ブラウザごに専用ドライバが用意されています。Chromeを操作するならChromeDriver、FireFoxを操作するならgeckodriver など
- Selenium
- WebDriverをコードから使用するためのモジュール。Pythonなどで書いたコードからWebDriverに命令を送る為の仕組みを提供
Webブラウザは色々ありますが、ここでは、Google Chromeを使います。
WebDriverと Seleniumはインストールが必要ですが、特に難しい操作はいりません。
Seleniumのインストール
Anacondaを使っている場合はconda installでインストールします。
user1:~ user1$ conda install -c conda-forge selenium
Anacondaを使っていない場合は、pip installでインストールしましょう
user1:~ user1$ pip install selenium
WebDriverのインストール
ブラウザはGoogle Chromeを使います。Chromeを自動操作するためにChrome用のWebDriver、ChromeDriverが必要です。
Anacondaを使っている場合は、conda installでインストールします。
user1:~ user1$ conda install python-chromedriver-binary
pipでインストールする場合は以下のように入力してください。
user1:~ user1$ pip install chromedriver-binary
上のコマンドでインストールすると、ChromeとChromeDriverのバージョンの不整合が起きて、seleniumが使えないことがあるようです。
そのような場合は、Chromeのバージョンを指定してインストールします。
アドレスバーにchrome://settings/helpと入力して、Chromeのヘルプ画面を開きます。
Chromeのヘルプ画面に、バージョン: 87.0.4280.20(Official Build) (x86_64)のように使用中のChromeのバージョンが表示されます。
そして、このChromeのバージョンを指定して、ChromeDriverをインストールします。
user1:~ user1$ pip install chromedriver-binary==87.0.4280.20
Python + SeleniumでWebブラウザ操作を自動化してみる
必要なツールのインストールが完了したので、ブラウザ操作の自動化を実践します。
例として、以下の一連の作業を自動化してみましょう。
- ChromeでAmazonにアクセス
- 検索ボックスに”Python 書籍”と入力して検索実行
- 検索結果のスクリーンショットを撮る
WebスクレイピングやSeleniumによるブラウザ操作自動化をおこなう為には、Webページの構造を調べる必要があります。これには、HTMLやCSSの知識が必要になるので、別途勉強が必要です。
Amazonのページを開き、検索ボックスを右クリックして、検証をクリックしてください。ブラウザの下の方に以下のようなHTMLの画面が現れます。

HTMLの中に、name=”field-keywords”と書かれている場所があります。Pythonコードの中にfiled-keywordsを指定することで、検索ボックスへの入力操作を行うことができます。
ソースコード
では、実際にコードを見ていきましょう。
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
url = "https://www.amazon.co.jp/"
#フルスクリーンにする
options = webdriver.ChromeOptions()
options.add_argument("--start-fullscreen")
#こっちでもOK
#options.add_argument("--kiosk")
#指定したURLに移動
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)
#検索
driver.find_element(By.NAME, "field-keywords").send_keys("python 書籍" + Keys.ENTER)
time.sleep(5)
#スクリーンショット
driver.save_screenshot("amazon.png")
#ChromeDriverを終了
driver.quit()
まず、コードの最初の部分では、Seleniumモジュールをimportし、フルスクリーンになるように設定を行っています。
フルスクリーンにするためには、driver.maximize_window()でも出来るようですが、私の環境(macOS Catalina)では上手くいきませんでした。
次に、driver.get()でページを開き、検索ボックスへ”python 書籍”と入力しています。
find_element(By.NAME, field-keywords)とすることで、HTMLの”name = field-keywords”部分、すなわち、検索ボックスを指定しています。
send_keys(“python 書籍”, Keys.ENTER)によって、検索ボックボックスに”python 書籍”を入力し、ENTERキーを押し、検索を実行します。
driver.save_screenshot(“amazon.png”)で検索実行後のスクリーンショットを撮ります。

最後にdriver.quit()でChromeDriverを閉じます。
とても簡単な例ですが、このようにSeleniumモジュールを使うことで、ブラウザ操作を自動化出来ます。
日常的に行うブラウザ操作があり、面倒だと思う場合は、是非Pythonで自動化してみてください。