背景
PythonでSeleniumを使ったスクレイピングを行っていたところ、
JupyterLab上では正常に動作するのに、コマンドプロンプトで .py
ファイルを実行すると、
ブラウザ(Chrome)が自動で閉じてしまうという問題が発生しました。
以下に、試した対処法と最終的に取った回避策を記録します。
試したこと一:ChromeDriverの更新
原因としてまず疑ったのが、Chrome本体とChromeDriverのバージョンの不一致です。
この不一致によって、ブラウザが起動直後に落ちることがあります。
実行した手順は次の通りです。
- Google Chromeのバージョン確認
Chromeを開く → 「︙」→「ヘルプ」→「Google Chrome について」→ バージョン確認 - ChromeDriverのダウンロード
https://chromedriver.chromium.org/downloads にアクセス
Chromeのバージョンと同じ先頭3桁のバージョンを選ぶ
Windowsならchromedriver_win32.zip
を選択 - zipを解凍し、既存の chromedriver.exe を上書き
これを行っても現象は改善されませんでした。
試したこと二:コマンドプロンプトのエラーログ確認
実行時に次のようなエラーログが出ていました。
ERROR:device_event_log_impl.cc(211)] [1234:5678] ...
これについて調べたところ、Chrome内部の警告であり、
今回のクラッシュとは直接関係がないものとされていました。
最終的な回避策:sleep関数を使ってブラウザを保持
原因の特定には至らなかったため、実用的な回避策として、
プログラムの末尾に次のようなコードを追加しました。
import time
time.sleep(3600)
これにより、ブラウザが自動終了せず、操作を続けられるようになりました。
再確認すべき点
- ChromeとChromeDriverのバージョンが一致しているか
- SeleniumとPythonのバージョンが安定版か
- オプション設定(ヘッドレスやno-sandboxなど)が影響していないか
- プログラム内で driver.quit() や driver.close() を呼び出していないか
これらの点をすべて確認しても改善しない場合、sleepによる一時保持も選択肢になります。
まとめ
JupyterLabでは問題なく動くのに、コマンドプロンプトで実行するとChromeが落ちてしまう問題に対し、
ChromeDriverの更新やエラーログの調査を行いましたが、根本的な解決には至りませんでした。
そこで、プログラムに time.sleep()
を追加することで、実用的な回避策として対応しました。
完全な解決ではありませんが、似た問題に直面した方の一助になれば幸いです。