【PythonでWebスクレイピング】Seleniumをインストールしてブラウザ操作を自動化しよう

「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”)で検索実行後のスクリーンショットを撮ります。

Seleniumで撮ったスクリーンショット


最後にdriver.quit()でChromeDriverを閉じます。


とても簡単な例ですが、このようにSeleniumモジュールを使うことで、ブラウザ操作を自動化出来ます。

日常的に行うブラウザ操作があり、面倒だと思う場合は、是非Pythonで自動化してみてください。

タイトルとURLをコピーしました