はじめに
本記事はWebブラウザの自動操作をやってみたいなという人を対象としています。
初学者が概要を理解し、「ひとまず動いた!」というところまで進めることを目的としています。
やること
Windows10またはWindows11でSeleniumをPythonで実行し、
Chromeを自動で立ち上げ検索結果のスクリーンショットを取得する。
そのために必要なものをインストールする手順および実行スクリプトを紹介する。
準備するもの
- Windows10 または Windows11 を搭載したPC
インストールするもの
Google Chrome 最新(125.0.6422.113で動作確認済み)- Python 3.10.4
- Selenium 4.17.2
chromedriver-binary
要約
Google Chromeをインストール(既にあれば不要)- Pythonをインストール(既にあれば不要)
- Seleniumをインストール
pip install selenium
chromedriver-binaryをインストールpip install chromedriver_binary==xx.x.xxxx.xx
- 下記に折りたたまれたスクリプトを実行してスクリーンショットを取得できれば成功
Google検索結果スクショ取得スクリプト
# 時間を計るライブラリをインポート
import time
# WebDriverライブラリをインポート
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# ChromeのWebDriverライブラリをインポート(Selenium 4.17より不要となったのでコメントアウト)
#import chromedriver_binary
# Chromeを指定する
driver = webdriver.Chrome()
# Chromeを開いてGoogleにアクセスする
driver.get('https://www.google.com/')
# 5秒待機する
time.sleep(5)
# ページ内でname属性がqの要素を指定する(検索ボックス)
search_box = driver.find_element(By.NAME,'q')
# 指定した要素(検索ボックス)にChromeDriverと入力する
search_box.send_keys('ChromeDriver')
# フォームを送信する(検索する)
search_box.submit()
# 5秒待機する
time.sleep(5)
# Webページのスクリーンショットを保存する(保存先はカレントディレクトリ)
driver.save_screenshot('selenium_schreenshot_test.png')
# 画面を閉じる
driver.quit()
1. Google Chromeをインストールする
Webブラウザです。
既にインストールしてある場合は不要です。
下記、Google Chromeヘルプを参考にインストールしてください。
https://support.google.com/chrome/answer/95346?hl=ja&co=GENIE.Platform%3DDesktop
Selenium 4.11よりブラウザを自動インストールするようになったため不要
(動作未確認)
2. Pythonをインストールする
PythonパッケージのインストールおよびPythonスクリプト実行に必要なのでインストールします。
既にインストールしてある場合は不要です。
下記、非公式Pythonサイトの記事を参考にインストールしてください。
https://www.python.jp/install/windows/install.html
Pythonがインストールされたかの確認方法
Windows PowerShellで「python --version」と入力すればインストールされているPythonのバージョンが確認できます。
python --version
「Python 3.X.X」のように表示されていればインストールは成功しています。
Python 3.10.4
うまくいかない場合はPowerShellの再起動、Windowsの再起動、Pythonの再インストールを試してください。
Windows PowerShellの起動方法
- Windowsロゴキー+Xキーで画面下部のスタートボタンからメニューが表示されます(スタートボタン右クリックでもOK)
「このアプリがデバイスに変更を加えることを許可しますか?」という確認がでてくる通り、
システムの設定変更といった操作が容易にできてしまいます。
コマンドを実行する際は必ず実行するコマンドを理解したうえで実行するようにしてください。
2-1. Seleniumをインストールする
SeleniumとはWebブラウザの自動操作を目的としてつくられたライブラリです。
PowerShellで「pip install selenium」を実行すればPythonにSeleniumのパッケージをインストールできます
pip install selenium
2-2. chromedriver-binaryをインストールする
chromedriver-binaryはChrome用のWebDriverです。
PowerShellで「pip install chromedriver_binary==xx.x.xxxx.xx(Chromeと一番近いバージョン)」でChrome用のWebDriverのパッケージをインストールします。
pip install chromedriver_binary==xx.x.xxxx.xx(Chromeと近いバージョン)
Selenium 4.6よりchromedriver-binaryのインストールは不要となりました
WebDriverとは
Webブラウザによって、同じブラウザでもバージョンによってシステムに違いがあります。
Seleniumでの自動操作を実現させるには、それらを理解しておく必要があります。
その理解者がWebDriverです。
chromedriver_binaryのインストールできるバージョンの確認方法
PowerShellで「pip install chromedriver_binary==」でchromedriver_binaryを無効なバージョン指定してインストールを試みます。
pip install chromedriver_binary==
そうするとバージョンが指定されていないとエラーが出て、インストールできるバージョンの一覧が「from versions:」の後ろにカンマ区切りで表示されます。
メジャーバージョンが同じものの中で一番近いバージョンをインストールします。(100.0.4896.60なら100から始まるバージョン)
マイナーバージョンは異なっていても基本的には動くかと思います。
ERROR: Could not find a version that satisfies the requirement chromedriver_binary== (from versions: 2.29.1, 2.31.1, 2.33.1, 2.34.0, 2.35.0, 2.35.1, 2.36.0, 2.37.0, 2.38.0, 2.39.0, 2.40.1, 2.41.0, 2.42.0, 2.43.0, 2.44.0, 2.45.0, 2.46.0, 70.0.3538.16.0, 70.0.3538.67.0, 70.0.3538.97.0, 71.0.3578.30.0, 71.0.3578.33.0, 71.0.3578.80.0, 71.0.3578.137.0, 72.0.3626.7.0, 72.0.3626.69.0, 73.0.3683.20.0, 73.0.3683.68.0, 74.0.3729.6.0, 75.0.3770.8.0, 75.0.3770.90.0, 75.0.3770.140.0, 76.0.3809.12.0, 76.0.3809.25.0, 76.0.3809.68.0, 76.0.3809.126.0, 77.0.3865.10.0, 77.0.3865.40.0, 78.0.3904.11.0, 78.0.3904.70.0, 78.0.3904.105.0, 79.0.3945.16.0, 79.0.3945.36.0, 80.0.3987.16.0, 80.0.3987.106.0, 81.0.4044.20.0, 81.0.4044.69.0, 81.0.4044.138.0, 83.0.4103.14.0, 83.0.4103.39.0, 84.0.4147.30.0, 85.0.4183.38.0, 85.0.4183.83.0, 85.0.4183.87.0, 86.0.4240.22.0, 87.0.4280.20.0, 87.0.4280.87.0, 87.0.4280.88.0, 88.0.4324.27.0, 88.0.4324.27.1, 88.0.4324.96.0, 89.0.4389.23.0, 90.0.4430.24.0, 91.0.4472.19.0, 91.0.4472.101.0, 92.0.4515.43.0, 92.0.4515.107.0, 93.0.4577.15.0, 93.0.4577.63.0, 94.0.4606.41.0, 94.0.4606.61.0, 94.0.4606.113.0, 95.0.4638.10.0, 95.0.4638.17.0, 95.0.4638.54.0, 95.0.4638.69.0, 96.0.4664.18.0, 96.0.4664.35.0, 96.0.4664.45.0, 97.0.4692.20.0, 97.0.4692.36.0, 97.0.4692.71.0, 98.0.4758.48.0, 98.0.4758.80.0, 98.0.4758.102.0, 99.0.4844.17.0, 99.0.4844.35.0, 99.0.4844.51.0, 100.0.4896.20.0)
ERROR: No matching distribution found for chromedriver_binary==
3. スクリプトを作成する
下記ブラウザ自動操作のスクリプトをパイソン形式で保存しPowerShellで実行する
# 時間を計るライブラリをインポート
import time
# WebDriverライブラリをインポート
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# ChromeのWebDriverライブラリをインポート
import chromedriver_binary
# Chromeを指定する
driver = webdriver.Chrome()
# Chromeを開いてGoogleにアクセスする
driver.get('https://www.google.com/')
# 5秒待機する
time.sleep(5)
# ページ内でname属性がqの要素を指定する(検索ボックス)
search_box = driver.find_element(By.NAME,'q')
# 指定した要素(検索ボックス)にChromeDriverと入力する
search_box.send_keys('ChromeDriver')
# フォームを送信する(検索する)
search_box.submit()
# 5秒待機する
time.sleep(5)
# Webページのスクリーンショットを保存する(保存先はカレントディレクトリ)
driver.save_screenshot('selenium_schreenshot_test.png')
# 画面を閉じる
driver.quit()
下記画像のようにChromeが勝手に立ち上がります。
(「Chromeは自動テストソフトウェアによって制御されています。」と表示されているのが目印)
検索結果のスクリーンショットが入ったselenium_schreenshot_test.pngがカレントディレクトリに生成されていれば成功です。
パイソンファイルの作り方
- メモ帳を開く(テキストエディタなら何でもいい)
- スクリプトをコピー&ペーストする
- ファイル名をtest.pyにして名前を付けて保存する
パイソンファイルの実行方法
- Cドライブ直下に新規フォルダを作成する
- 新規作成したフォルダ名をSeleniumTestにする
- PowerShellでカレントディレクトリを新規作成したフォルダにするコマンドを実行する
cd C:\SeleniumTest
- PowerShellでパイソンファイルを指定してパイソンを実行する
python test.py
参考文献
あとがき
自分でやったことをまとめてみたくて本記事を執筆しました。
ただ、既にSeleniumの導入手順紹介は良い記事がたくさんあります。
それらとどう差別化しようかと考えたところ、
初学者向けの記事は少ないことに気がつきました。
めちゃくちゃ丁寧な初学者向け記事もあるのですが、
そういったものはPythonのインストール方法といった細分化されきった記事でした。
したがって、環境構築からプログラム実行まで一連の手順を、
初学者向けにするのは需要があるかもしれないと考えこのような記事にしました。
初めての投稿なので至らない点があるかもしれません。
PythonもSeleniumも、今回初めて触れたので理解・説明が誤っている箇所があるかもしれません。
そういった場合はそっと指摘していただけると嬉しいです。
わかりやすかった、参考になったといったフィードバックも励みになります。
この記事を機に、Seleniumに興味を持っていただけたら幸いです。
お読みいただきありがとうございました。
- 2024/05/28追記
2年前に書いた記事ですが、今でもリアクションがチラホラきていたので「今でも動作するのかな」と不安になって確認および更新しました。
幸いなことに、以前の手順でも問題なく動作してくれました。
ただ、Seleniumバージョンアップで便利になったことにより省ける手順が多かったので更新しました。
混乱させないために、古い手順は取り消し線を入れるだけで残しています。