概要
Selenium などで Chrome を動かす際、chromedriver が必要になります。
ローカルにダウンロードすることが多いのでスクリプトとしてまとめました。
記事後ろにコメントとカスタマイズ可能な点を記載します。
スクリプト
curl, unzip に依存あります。
#!/bin/bash -xe
SCRIPT_DIR=$(dirname "$0")
SCRIPT_DIR=$(cd "${SCRIPT_DIR}"; pwd)
cd "${SCRIPT_DIR}"
CHROME_DRIVER_VERSION=$(curl -s http://chromedriver.storage.googleapis.com/LATEST_RELEASE)
MAC64_FILE=chromedriver_mac64.zip
MAC64_URL="http://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/${MAC64_FILE}"
LINUX64_FILE=chromedriver_linux64.zip
LINUX64_URL="http://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/${LINUX64_FILE}"
DRIVER_BIN_FILE=./chromedriver
if [ "$(uname)" = "Darwin" ]; then
CHROME_DRIVER_FILE=${MAC64_FILE}
CHROME_DRIVER_URL=${MAC64_URL}
else
CHROME_DRIVER_FILE=${LINUX64_FILE}
CHROME_DRIVER_URL=${LINUX64_URL}
fi
echo $CHROME_DRIVER_FILE
rm -rf ${DRIVER_BIN_FILE}
curl -O -L "${CHROME_DRIVER_URL}"
unzip ${CHROME_DRIVER_FILE}
chmod u+x ${DRIVER_BIN_FILE}
rm ${CHROME_DRIVER_FILE}
各コメント
配置場所
SCRIPT_DIR=$(dirname "$0")
SCRIPT_DIR=$(cd "${SCRIPT_DIR}"; pwd)
cd "${SCRIPT_DIR}"
このスクリプトはファイルにして扱うことを前提にしています。コピペだけで実行するならこの行はいらないです。
スクリプトの存在する位置で作業するようにしています。別の位置にしたい場合は cd
を書き換えてください。
シェルでの文字列の扱いは ShellCheck を利用して気をつけています。
chromedriver バージョンの指定
CHROME_DRIVER_VERSION=$(curl -s http://chromedriver.storage.googleapis.com/LATEST_RELEASE)
chromedriver の最新のバージョンコードを取得しています。最新とは言っても Chrome の Official Build の最新です。
LATEST_RELEASE_105 などにキーを変更することでバージョンを変えられます。キーは、 http://chromedriver.storage.googleapis.com のXMLを見て確認できます。
バージョンを固定したいなら直値にします。
$ curl -s http://chromedriver.storage.googleapis.com/LATEST_RELEASE
104.0.5112.79
$ curl -s http://chromedriver.storage.googleapis.com/LATEST_RELEASE_105
105.0.5195.19
OSごとの差分吸収
MAC64_FILE=chromedriver_mac64.zip
MAC64_URL="http://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/${MAC64_FILE}"
LINUX64_FILE=chromedriver_linux64.zip
LINUX64_URL="http://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/${LINUX64_FILE}"
DRIVER_BIN_FILE=./chromedriver
if [ "$(uname)" = "Darwin" ]; then
CHROME_DRIVER_FILE=${MAC64_FILE}
CHROME_DRIVER_URL=${MAC64_URL}
else
CHROME_DRIVER_FILE=${LINUX64_FILE}
CHROME_DRIVER_URL=${LINUX64_URL}
fi
OSごとにファイル名がちがうので吸収しています。
URLには chromedriver のバージョンコードを含めています。
実行ファイル名はどちらも chromedriver
で固定です。
実行部分
rm -rf ${DRIVER_BIN_FILE}
curl -O -L "${CHROME_DRIVER_URL}"
unzip ${CHROME_DRIVER_FILE}
chmod u+x ${DRIVER_BIN_FILE}
rm ${CHROME_DRIVER_FILE}
作業ディレクトリにて以下を行います。
- 古いものがあれば削除
-
-rf
にすることでファイルがなくてもエラーにならない。雑でもいいときに使う。
-
- ダウンロード
- リダイレクトするので
-L
を付けている。
- リダイレクトするので
- 展開
- 実行権限付与
- zip ファイル削除
実行後 chromedriver
が利用できます。