ColaboratoryでSeleniumを動かす方法を調べていたのですが、数か月たっただけでインストールパスが変わったりするので、検索した情報では使えなくなっています
自分は以下の方法をそのまま試しましたができませんでした
ただ、下記コードをベースにエラーログを見ながら解決方法を探し動かすことが出来ました
Google ColaboratoryでSeleniumを使うための設定方法 | DevelopersIO
データアナリティクス事業本部のueharaです。 今回はGoogle ColaboratoryでPythonからSeleniumを使うための設定方法を紹介したいと思います。 はじめに 2023年5月時点では、Google …
ColaboratoryでSeleniumを簡単に動かす"Google-Colab-Selenium"
Google ColaboratoryでスクレイピングするときにChromeとChromedriverのバージョン違いでハマっている場合の解決法(コピペ編)|DukeRacca
とりあえず動けばいいんだよという人のために解決用コピペ 日本語の文字化け対策 chromeとchromedriverのバージョン違い対策 バージョン。 コメントは様々なところからコピペしてきているのでその名残+chatGPTによるコメント。 # 更新を実行 !sudo apt -y update # 日本語フォントイン...
本記事ではまず動いたプログラムについて、その後どの記事を参考にして修正したかを解説します
2024/4/1時点で動作するプログラム
ColaboratoryでSeleniumを動かすための環境構築
# 更新を実行
!sudo apt -y update
# 日本語フォントインストール
!apt install fonts-ipafont-gothic
# ダウンロードのために必要なパッケージをインストール
!rm -f *.deb
# 足りなくなったら継ぎ足していく(今回はlibvulkan1)
!sudo apt install -y wget curl unzip libvulkan1
# 以下はChromeの依存パッケージ
!wget http://archive.ubuntu.com/ubuntu/pool/main/libu/libu2f-host/libu2f-udev_1.1.4-1_all.deb
!dpkg -i libu2f-udev_1.1.4-1_all.deb
# Chromeのインストール
!wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
!dpkg -i google-chrome-stable_current_amd64.deb
#stableversionのバージョン名だけを取得する
import json
import subprocess
import os
# curlコマンドを実行してデータを取得
curl_command = "curl -sS https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json" # ここに取得したいURLを入力
completed_process = subprocess.run(curl_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# エラーチェック
if completed_process.returncode == 0:
# 成功した場合、データはcompleted_process.stdoutに格納されています
data = completed_process.stdout
else:
# エラーが発生した場合、エラーメッセージはcompleted_process.stderrに格納されています
error_message = completed_process.stderr
print("エラーメッセージ:")
print(error_message)
json_data = json.loads(data)
version_number = json_data["channels"]["Stable"]["version"]
#環境変数に入れる
os.environ["VERSION_NUMBER"] = version_number
print()
print(version_number)
# Chrome Driverのインストール
# 再実行した際に色々残っているとエラーになるので
!rm -rf /tmp/*
!wget -N https://storage.googleapis.com/chrome-for-testing-public/$VERSION_NUMBER/linux64/chromedriver-linux64.zip -P /tmp/
!unzip -o /tmp/chromedriver-linux64.zip -d /tmp/
!cp -rf /tmp/chromedriver-linux64 /tmp/chromedriver
!chmod +x /tmp/chromedriver/chromedriver
!mv /tmp/chromedriver/chromedriver /usr/local/bin/chromedriver
!pip install selenium
このプログラムで必要なツールを入れていきます
ツールが入ったか確認するコマンド
!google-chrome --version
!chromedriver --version
もし、インストールに成功すると以下のようにどちらとも同じバージョンが表示されるはずです
※2024/4/1時点は123.0.6312.86
Google Chrome 123.0.6312.86
ChromeDriver 123.0.6312.86 (9b72c47a053648d405376c5cf07999ed626728da-refs/branch-heads/6312@{#698})
ツールが入って動作するかをテスト
from selenium import webdriver
URL = "https://dev.classmethod.jp/"
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(
options=options
)
driver.get(URL)
title = driver.title
driver.close()
print(title)
動作すると以下のような結果が返ってきます
クラスメソッド発「やってみた」系技術メディア | DevelopersIO
解説
Seleniumを動かすために必要なツール
動かすには以下の二つのツールが必要です
- Chrome
- Chrome Driver
参考にした以下のページではこの二つを入れているのは以下のコードです
Google ColaboratoryでスクレイピングするときにChromeとChromedriverのバージョン違いでハマっている場合の解決法(コピペ編)|DukeRacca
とりあえず動けばいいんだよという人のために解決用コピペ 日本語の文字化け対策 chromeとchromedriverのバージョン違い対策 バージョン。 コメントは様々なところからコピペしてきているのでその名残+chatGPTによるコメント。 # 更新を実行 !sudo apt -y update # 日本語フォントイン...
# Chromeのインストール
!wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
!dpkg -i google-chrome-stable_current_amd64.deb
# Chrome Driverのインストール
# 再実行した際に色々残っているとエラーになるので
!rm -rf /tmp/*
!wget -N https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$VERSION_NUMBER/linux64/chromedriver-linux64.zip -P /tmp/
参考にしたブログを実行した場合、Chrome Driverが入らない、もしくはChrome Driverのバージョンが間違っていることがログからわかりました
インストールパスを確認
なので、Chrome Driverのインストールパスを以下の公式ページで確認しました
するとインストールパスが変わっていることがわかりました
Chrome for Testing availability
このインストールパスの変更は定期的に起こるらしく、以下のページではバージョン115以降での変更点が書かれています
バージョン115以降のChrome用WebDriverのダウンロード方法 - ガンマソフト
Seleniumライブラリを用いてPythonでChromeブラウザを自動操作するときには、Chrome用のWebDriverが必要になります。 Selenium4.6.0からは自動ダウンロード機能が...
インストールパスを変更
なので、このインストールパスを以下のように変更することでChrome Driverがインストールされ、Seleniumが正常に動作しました
誤
!wget -N https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$VERSION_NUMBER/linux64/chromedriver-linux64.zip -P /tmp/
正
!wget -N https://storage.googleapis.com/chrome-for-testing-public/$VERSION_NUMBER/linux64/chromedriver-linux64.zip -P /tmp/
追記
【Colab】永久保存版 Selenium環境の構築(Chrome for Testing を使用) - Qiita
背景現在のColab環境では、「!pip install selenium」 を実行するだけでスクレイピングの環境構築が完了します(chromeやchromedriverの導入不要)「以前はちゃ…
コメント