Python3とSeleniumでクローラーを作成しているときに発生したエラー。
Docker上でChromeのWebDriverを使って起動するとクラッシュする現象です。
解決策
起動オプションに--disable-dev-shm-usageを追加する。
1 2 3 4 5 |
options = webdriver.ChromeOptions() options.add_argument('--no-sandbox') options.add_argument("--headless") options.add_argument("--disable-dev-shm-usage") #<=これを追加 browser = webdriver.Chrome(chromedriver, options=options) |
生じたエラー
Seleniumを起動しアクセスする部分で起きる。
1 2 3 4 5 6 7 8 9 10 11 |
browser.get(url) File "/usr/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 333, in get self.execute(Command.GET, {'url': url}) File "/usr/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/usr/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash from tab crashed (Session info: headless chrome=80.0.3987.149) (Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 3.10.0-1062.12.1.el7.x86_64 x86_64) |
原因
Dockerが使用している/dev/shmのサイズが開こうとするページが小さすぎることで
chromeが起動できないみたい。
Chromiumでバグ報告があがっている。
What steps will reproduce this crash (or if it's not reproducible,
what were you doing just before the crash)?
1. Reduce the size of /dev/shmmount -o remount,size=64M /dev/shm
(Originally I tried to run chromium in Docker, hence the 64M size; this report is the reduced state)
2. Visit some site that has lot of content (index.hu - crash in 3 seconds; youtube.com - crash after some 2 minutes in the middle of a video)
3. Scroll the site (pgDown 2-3 times)
dockerはまだまだわからないことが多い...
コメント
この記事のおかげで救われました!!!!!ありがとうございます!!!!!!
お役に立ててよかったです(´・ ・`)