質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

1回答

1061閲覧

開いているドライバーを削除するときどうしてますか?

fuku-chann

総合スコア82

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/12/27 22:25

編集2022/12/28 06:00

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 ビット)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

poto568

2022/12/28 00:35

「killしたいプロセスと残したいプロセスを目視で判断する必要がある」だと 難しいかもしれませんが、とりあえずぜんぶkillすればよいのであれば、 pgrep/pkillとかいかがでしょうか。 https://lmn-blog.com/mac06/
fuku-chann

2022/12/28 00:54

ありがとうございます。 検討させていただきますが、できればプロファイルなどの情報を取得して不要なものだけ削除できたらと思っています。
guest

回答1

0

エラーを例外処理して必ず quit されるようにしてはいかがでしょう

投稿2022/12/28 02:25

yuma.inaura

総合スコア1453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuku-chann

2022/12/28 03:19

ご回答ありがとうございます。 try exceptのことでしょうか? これでも残ってしまうことがあります。(本文編集しました)
otn

2022/12/28 04:52

> これでも残ってしまうことがあります。(本文編集しました) 1~9行目もtryの中に入れてもですか?
fuku-chann

2022/12/28 06:02

複数の処理があるため一部しか入れてませんでした。 コードを修正しましたので、ご確認お願いします。 問題ないようでしたら、変更して運用してみたいと思います。
otn

2022/12/28 06:52

> コードを修正しましたので、ご確認お願いします。 こちらで実行するわけじゃないので、そちらで実行して確認するのでは?
fuku-chann

2022/12/28 07:49

問題なさそうなので、これで運用してみます! ありがとうございました! コード作成中の時は、どうされてますでしょうか?
yuma.inaura

2022/12/28 07:53

コード作成中の時はコードを書いてますが、どういうことでしょうか?
fuku-chann

2022/12/28 08:31

本文に記載してあります下記の部分です。 新しいコードを開発中の時も、HTMLを見るためにあえてブラウザを残す時があります。このときも繰り返し同様の手間が生じています
fuku-chann

2022/12/28 20:46

開いているファイルとポートの内容もすぐに表示されなくてムダな時間がかかってしまっています。
yuma.inaura

2022/12/29 03:36

別のトピックだと思うのでまた別質問を作ってみてはいかがでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問