【Colab】永久保存版 Selenium環境の構築（Chrome for Testing を使用）

# 背景

:::note warn
現在のColab環境では、「!pip install selenium」 を実行するだけでスクレイピングの環境構築が完了します（chromeやchromedriverの導入不要）
:::

**「以前はちゃんと動いていたのに、、、」**

Google Colaboratory で久しぶりに Selenium を使ってスクレイピングしようとするたびに、エラーに見舞われる経験があります。
ネットや生成AIで方法を調べても、良い方法が見つかりません。

そこで試行錯誤した結果、「シンプルな導入コマンド」かつ「バージョンの更新に影響を受けない」ベストな方法を確立したので、備忘録として残します。（急いでいる方はColabへ）

https://colab.research.google.com/drive/1t4z9DZQC29LzaPMjRJOmicJJgtHD_NeT?usp=sharing

#### エラーの原因
Seleniumでスクレイピングするためには、一般的に

・google-chrome
・chromedriver

の2つを準備する必要がありますが、両者のバージョンに互換性が無いととエラーになります。


# Chrome for Testing

・[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/) は、開発者のためにChromeのバージョンを固定した"**chrome**"と"**chromedriver**"のインストーラ（zipファイル）を提供しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3469687/ae328435-98ef-7167-2db0-f3f4b0921c31.png)


# Selenium 導入コマンド

[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)  のウェブサイトを確認し、提供されている **Version** を指定して、
"**google-chrome**"と"**chromedriver**"をColab環境にダウンロード(wget)します。
展開(unzip)したものをパスが通っているディレクトリ(cp)に移動すれば構築完了です。


```shell
# seleniumのインストール
!pip install selenium

# Chrome for Testing Version 確認
# https://googlechromelabs.github.io/chrome-for-testing/
# → Stable: 129.0.6668.58

# google-chromeのダウンロード・展開
!wget https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.58/linux64/chrome-linux64.zip -N -P /tmp
!unzip -o /tmp/chrome-linux64.zip -d /tmp/
!rm -rf /tmp/chrome-linux64.zip
!cp -rf /tmp/chrome-linux64 /usr/local/bin/chrome-linux64
!rm -rf /tmp/chrome-linux64
!sudo ln -s /usr/local/bin/chrome-linux64/chrome /usr/local/bin/google-chrome

# chromedriverのダウンロード・展開
!wget https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.58/linux64/chromedriver-linux64.zip -N -P /tmp
!unzip -o /tmp/chromedriver-linux64.zip -d /tmp/
!rm -rf /tmp/chromedriver-linux64.zip
!cp -rf /tmp/chromedriver-linux64/chromedriver /usr/local/bin/
!rm -rf /tmp/chromedriver-linux64

# バージョン確認
!google-chrome --version
!chromedriver --version
```

本記事の執筆時点では Stable版の最新Versionが「129.0.6668.58」のため、wgetコマンドの2箇所に反映しています。

# Selenium サンプルコード

Colabではヘッドレスブラウザの使用が必須のため、Opsionsで設定する必要があります。

```python
# selenium スクレイピングサンプルコード

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=options)

driver.get("https://www.selenium.dev/ja/documentation/")
title = driver.title
driver.close()

print(title)
```

# まとめ

ColabでSeleniumによるスクレイピングを行うための方法を紹介しました。
ChromeのVersionを指定して導入しているため、月日が経って更新がされていても、同じ環境が担保されます。

自動的に最新バージョンを使用したい場合は、[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/) をスクレイピングして最新のVersionを取得するコードを書くと良いかもしれませんね。

以下に本記事で紹介したコードのColabノートブックを公開しています。

https://colab.research.google.com/drive/1t4z9DZQC29LzaPMjRJOmicJJgtHD_NeT?usp=sharing

# 参考リンク
https://developer.chrome.com/docs/chromedriver/downloads?hl=ja

https://www.ytyng.com/blog/install-chromedriver-126-on-ubuntu-22/

https://qiita.com/Kazukiya/items/11f7ed624fda06448e2d

https://forest.watch.impress.co.jp/docs/news/1508127.html

https://mozyanari.com/2024/03/31/colaboratory_selenium_install/