python seleniumでスクレイピング用のプログラムをcronで定期的に動かしています。
たまにエラーが出てしまい、driver.quit()の前で終了されることがあります。
この状態になると、ウェブドライバーが開かれたままになるので、手動で閉じるまでcronが止まってしまいます。
手動で閉じる時は、アクティビティモニタでfirefoxを検索してプロセスを絞り込み、多数あるブラウザのアイコンのプロセスをひとつずつクリックして、さらにuserで検索して、該当のプロファイルを見つ出し、プロファイルを特定しています。
いくつか同時にプログラムを動かしているため、該当のプロセスを探すのに時間がかかってしまいます。
また、新しいコードを開発中の時も、HTMLを見るためにあえてブラウザを残す時があります。このときも繰り返し同様の手間が生じています
自動的にエラーで残った任意のウェブドライバーを閉じる方法があれば一番良いのですが、手動でももっと簡単に該当のプロセスを見つける方法があれば教えていただきたいです。
何かご存知の方おられましたら、ご教示お願いいたします。
改善コード
python
1try: 2 options = Options() 3 options.add_argument('-profile') 4 options.add_argument('/Users/xxxx/Library/Caches/Firefox/Profiles/xxx') 5 options.add_argument('--headless') 6 options.add_argument('--no-sandbox') 7 options.add_argument('--disable-gpu') 8 driver = webdriver.Firefox(executable_path=path, options=options) 9 driver.implicitly_wait(15) 10 wait = WebDriverWait(driver, 10) 11 try: 12 driver.get("https://xxx") 13 sleep(5) 14 except Exception as e: 15 print(location(), e) 16 try: 17 driver.get("https://yyy") 18 sleep(5) 19 except Exception as e: 20 print(location(), e) 21except Exception as e: 22 print(location(), e) 23driver.quit()
バージョン情報
macOS 13.0.1(22A400)
Python 3.6.0
selenium 3.141.0
Firefox 92.0.1 (64 ビット)