Header Ads Widget

楽天ビック

Python × Seleniumでスクレイピング202504! 最新環境での注意点まとめ(Selenium 4対応版)

🎯 はじめに

最近「Python で Web スクレイピングをしてみたい」という初心者向け動画や記事はたくさんありますが、Selenium の進化が早すぎて、情報が古いままになっているケースも多いです。

今回は、以下の YouTube 動画をベースに実際に手を動かしてみたところ、環境の違いやSeleniumのバージョン差によっていろいろハマったので、最新版のSelenium 4.6〜4.11 でどう動かすのが正解なのかを整理してみました。

⚙ 実行環境

項目内容
OSmacOS 15.3.2(24D81)
CPUApple Silicon(arm64)
Python3.12(Anaconda)
Chrome135.0.7049.42(Official Build)(arm64)
ChromeDriver136.0.7103.17
Selenium4.11.2

💡 ハマったポイントと対策まとめ

  • ❌ ImportError: 自分のファイル名が selenium.py
    → モジュール名と競合しないように selenium_test.py に変更。
  • ❌ WebDriver の引数ミス
    webdriver.Chrome(service=..., options=...) の形式にする。
  • ❌ find_element_by_xpath がない
    → Selenium 4.3 以降では driver.find_element(By.XPATH, ...) を使う。
  • ❌ NoSuchElementException
    → JavaScriptで表示される要素は WebDriverWait で明示的に待つ必要がある。
  • ❌ chromedriver 実行時に killed
    → Apple Silicon 向け arm64版のchromedriver を使用。
  • ❌ Gatekeeper によるブロック
    xattr -d com.apple.quarantine path/to/chromedriver で解除。

🚀 ここがすごい!Selenium 4.6 以降の進化

Selenium 4.6 から「selenium-manager」機能が追加され、次のような画期的なことが可能になりました:

  • ドライバの手動ダウンロード不要!
  • 自動でバージョンの合った ChromeDriver を取得
  • ✅ Selenium 4.11 以降はなんと ブラウザ自体も内蔵(Chrome for Testing)

つまり、環境構築の難しさが一気に軽減されたんです!

✅ 最終的に動作したコード(CSSセレクタ+明示的待機)

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()
# options.add_argument('--headless')  # 必要に応じて

driver = webdriver.Chrome(service=Service(), options=options)
driver.implicitly_wait(3)
driver.get("https://www.library.chiyoda.tokyo.jp/")

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "span.schedule-list01__text")))
print("本日の開館状況:", element.text)

driver.quit()

📎 その他Tips

  • chromedriver のパスを通すには ~/.zshrcexport PATH="$HOME/tools:$PATH" を追加。
  • macOSの「開けません」系の警告は「システム設定」→「セキュリティとプライバシー」から開けるように。

🎯 おわりに:APIと共に成長しよう

Selenium は毎年のように進化しています。バージョンによってコードが動かなくなることもあるので、常に公式のAPIドキュメントを確認しながら開発する習慣がとても大切です。

特に今後は「selenium-manager」の登場によって、より簡単・高速に環境を整えられるようになりました。ドライバの手動DLは過去のものになるかもしれませんね。

これからも Python × Selenium のスクレイピングはさらに便利に進化していきます。情報を追いつつ、自動化の力を味方にしていきましょう!


この記事が参考になったら、ぜひシェアしていただけると嬉しいです!

コメントを投稿

0 コメント