さくら VPS Python Selenium Web 自動操作

Google Chrome のインストール

Selenium と ChromeDriver のインスト-ルが完了しましたので 引き続き Google Chrome をインストールしていきます。
chromium-browser がインスト-ルされているのだから、Google Chrome のインストールは必要ないと思っていました。
実際 selenium3 では Google Chrome は必要ありませんでした。
ところが、selenium4 では Google Chrome が必要で、chromium-browser は不要なようです。
私の使い方が悪いのかもしれません。
仕方がないので、Google Chrome をサ-バに入れることにしました。
そもそも Google Chrome は PC 用でサ-バにいれるのはおかしいと思っていたのですが、 案の定サ-バへのインスト-ルの方法はかなり面倒です。
Google Chrome のインストール方法は
UbuntuでSeleniumを動かしてスクレイピングを行う【Python】 へ行くとよく書いてあります。
シリアルコンソ-ル(β版)を開き、
tmp フォルダに移動します。
$ cd /tmp
移動したら
$ wget https://dl.google.com/linux/linux_signing_key.pub
として、公開鍵をダウンロードして追加登録します。
$ sudo apt-key add linux_signing_key.pub
Chrome のリポジトリを追加します。

  $ echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list

とします。
次にパッケージリストを更新して
$ sudo apt-get update
$ sudo apt -f install -y
$ sudo apt-get install google-chrome-stable
yamada@ik*-***-*****:~$ which google-chrome
でインスト-ル場所を確認できます。
私の場合
/usr/bin/google-chrome
に入りました。
これで、Google Chrome のインストールは完了なのですが、インスト-ル手順が納得ができない人は
【図解】Ubuntu Desktop 20.04 LTS:Google Chromeインストール手順
に行くと納得のいく手順でのインスト-ル方法の紹介がありますので、こちらを参考にされると良いと思います。

ChromeDriver と Google Chrome のバージョン比較

ChromeDriver と Google Chrome のバージョンを比較します。
Google Chrome のバージョンは
yamada@********:~$ google-chrome --version
で確認できます。
私の場合、結果
Google Chrome 96.0.4664.110
でした。
先程、ChromeDriver のバージョンは、同じく
ChromeDriver 96.0.4664.110
でした。
ChromeDriver のバージョンの方が大きい場合は、Selenium が正しく起動しないことあります。
基本、二つのバージョンが同じであることを確認してください。

ChromeDriver と Google Chrome のバージョン合わせ

サ-バのなかで使用している Google Chrome のバージョンと
Selenium4 で使用している WebDriver(ChromeDriver)のバージョンを一致させます。
これを自動で行なってくれる webdriver manager をインスト-ルします。
シリアルコンソ-ル(β版)を開き、
yamada@********:~$ sudo pip3 install webdriver_manager
webdriver_manager のバ-ジョンは
$ sudo pip3 list
で確認できます。
結果
webdriver-manager 3.5.2
WebDriver manager を動作させた例を表示します。


  ====== WebDriver manager ======
Current google-chrome version is 96.0.4664 Get LATEST chromedriver version for 96.0.4664 google-chrome Trying to download new driver from https://chromedriver.storage.googleapis.com/96.0.4664.45/chromedriver_linux64.zip Driver has been saved in cache [/home/yasuhiro/.wdm/drivers/chromedriver/linux64/96.0.4664.45]

サ-バにインスト-ルされている google-chrome version ①を確認
①以下でかつ最新の chromedriver version を取得、これを cache に保存。
すでに保存済であれば、何もせず抜ける。

chromium-browser 削除

Google Chrome がインストールされたので chromium-browser はいらなくなりましたのでこれを削除します。
シリアルコンソ-ル(β版)を開き
yamada@********:~$ sudo apt remove --purge chromium-browser
yamada@********:~$ sudo apt autoremove

selenium4 テストプログラム作成

それでは selenium4 を使用したテストプログラムを作成します。
Google を5秒間開き閉じるだけです。
まずは作法で
#!/usr/bin/python3
# -*- coding: utf-8 -*-
この2行はなくても OK です。
そして必要なファイルをインポ-トします。
極端なこと言うとインポ-トできれば出来上がったも同然です。

  from selenium import webdriver
  from selenium.webdriver import ChromeOptions
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.webdriver.support import expected_conditions
  from webdriver_manager.chrome import ChromeDriverManager
  from selenium.webdriver.chrome.service import Service
  import time

あとは、Google ブラウザの初期設定値を定義します。
options = webdriver.ChromeOptions()
そして、デバッグが終わって動作が確認できたら
options.headless = True
としてヘッドレスにします。
取り敢えずは、
# options = webdriver.ChromeOptions()
としてブラウザの動きがわかるようにします。
次に、Google Chrome のバージョンと ChromeDriver のバージョンを一致させます。
serv = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=serv, options=options)
これで、Google Chrome を自動制御する selenium.webdriver の インスタンス driver が完成しました。
この driver に表示したい URL 書込んで上げればプラウザにその URL の内容表示されます。
driver.get('https://google.com')
すべてのページ内容が表示されるまで待機(今回は最大10秒) するための element インスタンスを作成します。
wait = WebDriverWait(driver, 10)

  element = wait.until(expected_conditions.visibility_of_all_elements_located)

5秒間表示したらプラウザを閉じて終りです。
time.sleep(5)
driver.quit()

selenium4 テストプログラムの説明が完了しましたので、引き続き、本 selenium4 テストプログラムをまとめます。


  • selenium4 テストプログラムまとめ に進む
  • Selenium Web 自動操作動作停止 に戻る
  • 70VPS に戻る