Webサイトのスクリーンキャプチャを自動化したく、現代の流行りを調べたらSeleniumを使うのがよさそうだったので、WSL2を使ってパパッと構築してみました。
- WSL2
- Ubuntu 20.04
- Python 3.8
環境構築
まっさらなUbuntu 20.04にインストールしていきます。
自動化を行うSeleniumはPython用パッケージインストーラーpipを使うので先にインストールします。
# インストール
sudo apt install python3-pip
# バージョン確認
pip --version
# pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
# インストール
pip install selenium
# バージョン確認
pip list | grep selenium
# selenium 4.2.0
Seleniumバージョン4がインストールされました。
Seleniumのサンプルプログラムを色々見ていると、記述方法がバージョンで結構異なるようなので、プログラミング時に注意したほうがいいです。
画面キャプチャをするにはブラウザが必要で、今回はGoogle Chromeを使用します。
インストール方法はいくつかありますが、本家サイトからインストーラーをダウンロードして作業します。
# ホームディレクトリに移動
cd
# ダウンロード
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# インストール(依存パッケージも同時にインストールされます)
sudo apt install ./google-chrome-stable_current_amd64.deb
# バージョン確認
google-chrome --version
# Google Chrome 103.0.5060.53
Google Chrome 103.0.5060.53
がインストールされました。
ChromeDriverはSeleniumからChromeを操作するために使用します。
インストール時の注意点は、先にインストールしたChromeのバージョン以下にする必要があります。
こちらもインストール方法はいくつかありますが、本家サイトからChromeのバージョン以下の物を探してダウンロードします。
今回はChromeと同じバージョン103.0.5060.53
のlinux用をダウンロードします。
# ダウンロード
wget https://chromedriver.storage.googleapis.com/103.0.5060.53/chromedriver_linux64.zip
zipファイルを解凍するにはunzipが必要なのでインストールします。
(初期状態のUbuntuでなければ殆どの場合インストール済みかもしれません)
# インストール
sudo apt install unzip
zipを解凍して実行ファイルを移動します。
# 解凍
unzip chromedriver_linux64.zip
# 移動
sudo mv chromedriver /usr/bin/
# バージョン確認
chromedriver -v
# ChromeDriver 103.0.5060.53
test.py
などのファイル名で空のファイルを作成して以下のサンプルコードを貼り付けます。
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
options.add_argument('--no-sandbox')
driver = webdriver.Chrome('chromedriver', options=options)
driver.get('https://google.com')
driver.implicitly_wait(10)
driver.save_screenshot('result.png')
driver.quit()
ターミナルからtest.py
を実行してresult.png
が作成されるか確認します。
python3 test.py
result.png
が作成されたでしょうか。
もしかして下図のように日本語が文字化けしていますか?
文字化けしている場合は日本語フォントをインストールしましょう。
# インストール
sudo apt install fonts-ipafont-gothic
再度実行すると日本語が表示されるはずです。
WSL2 + Ubuntu20.04だとこのような感じで環境構築ができました!
あとはSeleniumの仕様書やサンプルコードとにらめっこです。
一応WSL1でも試したところ、Chromeの起動でスタックするようで環境構築は難しいのかもしれません。
コメント