これは何
スクレイピングを実行するにあたって、chromedriver を導入するまでの記事です。
ChromeDriver (クロームドライバー)とは、Google Chromeブラウザを自動的に操作するためのツールです。これは、WebDriverプロトコルを実装しており、主にウェブアプリケーションのテストを自動化するために使われます。ChromeDriverは、特にSeleniumというオープンソースの自動化フレームワークと組み合わせて使用され、ブラウザ操作をスクリプトで自動化する際に非常に便利です。
🪴 実行環境
- Apple Silicon M1 MacBook Air
- 16 Gb
- macOS Sequoia 15.0
- chromedriver version : ChromeDriver 129.0.6668.58
- Google Chrome version : 129.0.6668.59(Official Build) (arm64)
- 2024/09/18 現在の実行
🛠️ やり方
まずは作業するディレクトリを作成します。
mkdir scrapingTest
venv モジュールを使用して仮想環境を作成する。
venv という名前のディレクトリがカレントディレクトリに追加されます。
python -m venv venv
仮想環境有効化
source venv/bin/activate
必要なライブラリのインストール
pip install requests beautifulsoup4 selenium
- requests: ウェブページからデータを取得するライブラリ。
- BeautifulSoup4: HTMLやXMLのデータを解析し、必要な情報を抽出するためのライブラリ。
- Selenium: JavaScriptで生成されたコンテンツを扱うための自動化ライブラリ。動的なページにも対応。
ChromeDriver のインストール
ChromeDriver のインストール
macの方はbrewをつかって入れます。
brew install chromedriver
Webサイトから落としたい方は最新安定版は以下リンクからお使いのOSに合ったものをダウンロードできるはずです。https://googlechromelabs.github.io/chrome-for-testing/#stable
chromedriver のパスを確認する
which chromedriver
brew –prefix を使った確認は“No available formula with the name “chromedriver”. Did you mean chrome-cli?”と返ってくるため、できませんでした。解決方法はあると思いますが…。
実行確認
pythonファイルを作る
touch scraper.py
from selenium import webdriver
# ChromeDriverのパスを指定
driver = webdriver.Chrome(executable_path='/opt/homebrew/bin/chromedriver')
# 例: Webページにアクセス
driver.get('https://coiai.net')
# ブラウザを閉じる
driver.quit()
私の場合出力されたパス名は/opt/homebrew/bin/chromedriverだったのでこれを当てはめています。
上記ファイルを正しく実行できた場合は、一瞬私のブログが立ち上がって、ブラウザが閉じる動作をすると思います。
ターミナルからの返答はありません。
このような場合は失敗
【ケース1】システム環境設定の問題
実行すると下記のポップアップが出る場合があります。
Appleは、“chromedriver”にMacに損害を与えたり、プライバシーを侵害する可能性のあるマルウェアが含まれていないことを検証できませんでした。
その場合は システム環境設定 を開いてください。
プライバシーとセキュリティ の項目をクリックして、下部までスクロールすると、 お使いの Mac を保護するために “chromedriver” がブロックされました。 と表示されているはずです。
その右にある”このまま許可” のボタンを押下し、再度ターミナルで実行すればできます。
【ケース2】ChromeDriver と Chrome のバージョン違いによるエラー
もしここで以下のような返答があれば、お使いの Chrome と chromedriver のバージョンが合っていない可能性があります。
Traceback (most recent call last):
File "/Users/coiai/Code/scrapingTest/scraper.py", line 6, in <module>
driver = webdriver.Chrome(service=service)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__
super().__init__(
File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/chromium/webdriver.py", line 66, in __init__
super().__init__(command_executor=executor, options=options)
File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 212, in __init__
self.start_session(capabilities)
File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 299, in start_session
response = self.execute(Command.NEW_SESSION, caps)["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 354, in execute
self.error_handler.check_response(response)
File "/Users/coiai/Code/scrapingTest/venv/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 129
Current browser version is 128.0.6613.138 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Stacktrace:
0 chromedriver 0x0000000102457ed4 cxxbridge1$str$ptr + 1906348
1 chromedriver 0x0000000102450344 cxxbridge1$str$ptr + 1874716
2 chromedriver 0x0000000102064264 cxxbridge1$string$len + 89492
3 chromedriver 0x000000010209a1dc cxxbridge1$string$len + 310540
4 chromedriver 0x0000000102099404 cxxbridge1$string$len + 306996
5 chromedriver 0x00000001020951b0 cxxbridge1$string$len + 290016
6 chromedriver 0x00000001020916c0 cxxbridge1$string$len + 274928
7 chromedriver 0x00000001020d2188 cxxbridge1$string$len + 539832
8 chromedriver 0x00000001020d1ac8 cxxbridge1$string$len + 538104
9 chromedriver 0x000000010209d134 cxxbridge1$string$len + 322660
10 chromedriver 0x000000010209dd84 cxxbridge1$string$len + 325812
11 chromedriver 0x000000010241ff90 cxxbridge1$str$ptr + 1677160
12 chromedriver 0x00000001024248fc cxxbridge1$str$ptr + 1695956
13 chromedriver 0x00000001024054b8 cxxbridge1$str$ptr + 1567888
14 chromedriver 0x00000001024251cc cxxbridge1$str$ptr + 1698212
15 chromedriver 0x00000001023f6a60 cxxbridge1$str$ptr + 1507896
16 chromedriver 0x0000000102441214 cxxbridge1$str$ptr + 1812972
17 chromedriver 0x000000010244136c cxxbridge1$str$ptr + 1813316
18 chromedriver 0x000000010244ffe4 cxxbridge1$str$ptr + 1873852
19 libsystem_pthread.dylib 0x000000019abbf2e4 _pthread_start + 136
20 libsystem_pthread.dylib 0x000000019abba0fc thread_start + 8
chromedriver --version
で返ってくるバージョン情報と
chrome の更新はchromeの設定からchromeについて、からみられるバージョン情報を見比べてみてください。(場合によってはアップデートしましょう)
コメントを残す