fysh blog

備忘録とかにする予定

Google ColabでSeleniumを使うとき

Google ColabでSeleniumを使ってWebスクレイピングをしようとしたところ,以下のコードでwebdriverのエラーが発生した.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.add_argument('--headless')
options.add_argument("--no-sandbox")
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
WebDriverException: Message: Service /root/.wdm/drivers/chromedriver/linux64/108.0.5359/chromedriver unexpectedly exited. Status code was: -6

以下のようにchromedriverのパスを直接指定すると正常に動作した.

driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver",options=options)

Google ColabではChromeDriverManagerが使えないのか調査すると,以下の記事を発見した. メモリ割り当てチェッカーを無効にする必要があるらしい. ja.stackoverflow.com

記事に倣い以下のようにコードを追加したところ,正常に動作した.

import os
if 'LD_PRELOAD' in os.environ:
    ld_preload = os.environ['LD_PRELOAD']
    del os.environ['LD_PRELOAD']

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

if 'ld_preload' in locals():
    os.environ['LD_PRELOAD'] = ld_preload