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

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

新規登録して質問してみよう
ただいま回答率
85.33%
Python 3.x

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

selenium

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

Q&A

解決済

1回答

448閲覧

Python 3で動いていたSelenium 4のスクレイピングが突然動かなくなりました。Chromeが起動してない??path がない??とエラーが出ます

hidesroon

総合スコア3

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2025/01/31 10:29

編集2025/02/01 06:57

実現したいこと

本日昼頃まで動いていたスクレイピングを復活させたいです
下にエラーの文言を貼っております。
これを見ると、Chrome が正しく入っていない・・様に見えます・・が
午前中は動いており、何の変更も行なっておりません

chrome を直接起動させてみると、エラーが出ます
ドライバーは動いているかと思います

下の方に詳細ログを記載してますが、chrome の読込場所が違うのでは??
.cache/以下・・を見てないのでは??

デバック手順 ◾️①[コンソール1]直接 driver を立ち上げると起動する ◾️②[コンソール2]書きスクリプト起動 ◾️③[コンソール2]エラー ◾️④[コンソール1] Browser search. Trying... /bin/chrome Browser search. Trying... /opt/google/chrome/chrome Browser search. Found at /opt/google/chrome/chrome <--- このchrome を見てる?

似たような経験をされた方、
またはここが怪し??と思い当たる箇所がありましたら
ご教授いただけますでしょうか?

◾️ 環境
OS : aws Linux2
Python : 3.11.5
selenium : 4.26.1

◾️ chrome & driver
.cache/selenium/chrome/linux64/120.0.6099.109/chrome
.cache/selenium/chromedriver/linux64/120.0.6099.109/chromedriver

◾️ ドライバーはダウンロードしてません
バージョンを指定する事で、自動でchrome のバージョンに合った
ドライバーをインストールするようにしてます

options.set_capability('browserVersion', '120')

発生している問題・分からないこと

chrome が無い・・とエラーメッセージでは言ってます
しかし、入っていると思います

chromedriver not found in PATH

エラーメッセージ

error

1DEBUG:selenium.webdriver.common.selenium_manager:Selenium Manager binary found at: /home/⚫️⚫️⚫️/.pyenv/versions/3.11.5/lib/python3.11/site-packages/selenium/webdriver/common/linux/selenium-manager 2DEBUG:selenium.webdriver.common.selenium_manager:Executing process: /home/⚫️⚫️⚫️/.pyenv/versions/3.11.5/lib/python3.11/site-packages/selenium/webdriver/common/linux/selenium-manager --browser chrome --browser-version 120 --debug --language-binding python --output json 3DEBUG:selenium.webdriver.common.selenium_manager:chromedriver not found in PATH 4DEBUG:selenium.webdriver.common.selenium_manager:chrome detected at /usr/bin/google-chrome 5DEBUG:selenium.webdriver.common.selenium_manager:Running command: /usr/bin/google-chrome --version 6DEBUG:selenium.webdriver.common.selenium_manager:Output: "" 7DEBUG:selenium.webdriver.common.selenium_manager:Running command: "/usr/bin/google-chrome" --version 8DEBUG:selenium.webdriver.common.selenium_manager:Output: "" 9DEBUG:selenium.webdriver.common.selenium_manager:Running command: '/usr/bin/google-chrome' --version 10DEBUG:selenium.webdriver.common.selenium_manager:Output: "" 11DEBUG:selenium.webdriver.common.selenium_manager:Running command: /usr/bin/google-chrome --version 12DEBUG:selenium.webdriver.common.selenium_manager:Output: "" 13DEBUG:selenium.webdriver.common.selenium_manager:chrome 120 not found in the system 14DEBUG:selenium.webdriver.common.selenium_manager:Required browser: chrome 120.0.6099.109 15DEBUG:selenium.webdriver.common.selenium_manager:chrome 120.0.6099.109 already exists 16DEBUG:selenium.webdriver.common.selenium_manager:chrome 120.0.6099.109 is available at /home/⚫️⚫️⚫️/.cache/selenium/chrome/linux64/120.0.6099.109/chrome 17DEBUG:selenium.webdriver.common.selenium_manager:Required driver: chromedriver 120.0.6099.109 18DEBUG:selenium.webdriver.common.selenium_manager:chromedriver 120.0.6099.109 already in the cache 19DEBUG:selenium.webdriver.common.selenium_manager:Driver path: /home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/chromedriver 20DEBUG:selenium.webdriver.common.selenium_manager:Browser path: /home/⚫️⚫️⚫️/.cache/selenium/chrome/linux64/120.0.6099.109/chrome 21DEBUG:selenium.webdriver.common.service:Started executable: `/home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/chromedriver` in a child process with pid: 18095 using 0 to output -3 22DEBUG:selenium.webdriver.remote.remote_connection:POST http://localhost:52157/session {'capabilities': {'firstMatch': [{}], 'alwaysMatch': {'browserName': 'chrome', 'pageLoadStrategy': <PageLoadStrategy.normal: 'normal'>, 'browserVersion': None, 'goog:chromeOptions': {'prefs': {'download.default_directory': '/home/⚫️⚫️⚫️/UserData/mieru_dl/mieruka_shipping_01', 'download.prompt_for_download': False, 'download.directory_upgrade': True}, 'extensions': [], 'binary': '/home/⚫️⚫️⚫️/.cache/selenium/chrome/linux64/120.0.6099.109/chrome', 'args': ['--headless=new', '--no-sandbox', '--single-process', '--disable-dev-shm-usage']}}}}

該当のソースコード

Python

1from selenium import webdriver 2from selenium.webdriver.common.by import By 3from selenium.webdriver.support.ui import WebDriverWait 4from selenium.webdriver.support import expected_conditions as EC 5 6 #------------------------------------------------------------- 7 # オプション | chrome & driver を取得 8 #------------------------------------------------------------- 9 options = webdriver.ChromeOptions() 10 options.add_argument('--headless=new') 11 options.add_argument('--no-sandbox') 12 options.add_argument('--single-process') 13 options.add_argument('--disable-dev-shm-usage') 14 15 options.set_capability('browserVersion', '120') 16 17 #------------------------------------------------------------- 18 # ダウンロードパス指定 19 #------------------------------------------------------------- 20 prefs = { 21 # 'profile.default_content_settings.popups': 0, 22 'download.default_directory': dlpass_, 23 'download.prompt_for_download': False, 24 'download.directory_upgrade': True 25 } 26 options.add_experimental_option('prefs', prefs) 27 28 #------------------------------------------------------------- 29 # chrome ドライバーへの接続 30 #------------------------------------------------------------- 31 driver = webdriver.Chrome(options=options) 32 33 #------------------------------------------------------------- 34 # download 設定 35 #------------------------------------------------------------- 36 driver.command_executor._commands['send_command'] = ( 37 'POST', 38 '/session/$sessionId/chromium/send_command' 39 ) 40 41 #------------------------------------------------------------- 42 # START 43 #------------------------------------------------------------- 44 mieruUrl = 'xxxxxxxxxxxxx' 45 driver.get(mieruUrl)

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

◾️直接 chrome を立ち上げるとエラー
$ /home/xxxxxxxxx/.cache/selenium/chrome/linux64/120.0.6099.109/chrome --headless=NEW

[0131/185320.676448:WARNING:resource_bundle.cc(464)] locale_file_path.empty() for locale
[0131/185320.676604:ERROR:resource_bundle.cc(1024)] Failed to load /home/xxxxxxxxx/.cache/selenium/chrome/linux64/120.0.6099.109/resources.pak
Some features may not be available.
[0131/185320.708839:FATAL:v8_initializer.cc(573)] Error loading V8 startup snapshot file
[0131/185320.709014:FATAL:v8_initializer.cc(573)] Error loading V8 startup snapshot file
[0131/185320.718611:FATAL:zygote_host_impl_linux.cc(201)] Check failed: . : No such file or directory (2)
Trace/breakpoint trap

◾️①[コンソール1]直接 driver を立ち上げると起動する
$ /home/xxxxxxxxx/.cache/selenium/chromedriver/linux64/120.0.6099.109/chromedriver --log-level=DEBUG

Starting ChromeDriver 120.0.6099.109 (3419140ab665596f21b385ce136419fde0924272-refs/branch-heads/6099@{#1483}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

◾️②[コンソール2]下記スクリプト起動
#!/bin/sh
curl --location 'localhost:9515/session'
--header 'Content-Type: application/json; charset=utf-8'
--data '{
"capabilities": {
"firstMatch": [
{
"browserName": "chrome"
}
]
}
}'
◾️③[コンソール2]エラー
{"value":{"error":"session not created","message":"session not created: Chrome failed to start: exited normally.\n (session not created: DevToolsActivePort file doesn't exist)\n (The process started from chrome location /opt/google/chrome/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)","stacktrace":"#0 0x55e667a07f83 \u003Cunknown>

◾️④[コンソール1]
[1738321361.362][INFO]: [30deea2a45c3f7c3d207e76b48e0bb4b] COMMAND InitSession {
"capabilities": {
"firstMatch": [ {
"browserName": "chrome"
} ]
}
}
Browser search. Trying... /home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/chrome
Browser search. Trying... /home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/chrome
Browser search. Trying... /home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/google-chrome
Browser search. Trying... /home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/chromium
Browser search. Trying... /home/⚫️⚫️⚫️/.cache/selenium/chromedriver/linux64/120.0.6099.109/chromium-browser
Browser search. Trying... /usr/local/sbin/chrome
Browser search. Trying... /usr/local/bin/chrome
Browser search. Trying... /usr/sbin/chrome
Browser search. Trying... /usr/bin/chrome
Browser search. Trying... /sbin/chrome
Browser search. Trying... /bin/chrome
Browser search. Trying... /opt/google/chrome/chrome
Browser search. Found at /opt/google/chrome/chrome  ←ここのchromeを見てる?

補足

{'code': 65, 'message': 'No space left on device (os error 28)', 'driver_path': '', 'browser_path': ''}
こんなエラーメッセージがありました。

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

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

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

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

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

meg_

2025/02/01 06:57

> chrome が無い・・とエラーメッセージでは言ってます > しかし、入っていると思います > > chromedriver not found in PATH chromedriverがパスに見つからなかった、というエラーでしょうか? Chromeのバージョンは120で間違いないでしょうか?
hidesroon

2025/02/01 08:07

すみません・・ コメントいただいていたのに 気づいておりませんでした ご確認ありがとうございます 原因ですが、tmp/ 直下に 大量のフォルダが生成されてました これが原因でした・・ 良い経験になりました
hidesroon

2025/02/01 08:09

こんな状態で、95%が使用中でした 1月 30 08:18 .org.chromium.Chromium.zWMO78 1月 24 15:27 .org.chromium.Chromium.zZGcfh 1月 30 14:00 .org.chromium.Chromium.zZKoj8 1月 31 10:33 .org.chromium.Chromium.zaVpxd 1月 28 16:06 .org.chromium.Chromium.zbzwxv 1月 31 11:15 .org.chromium.Chromium.zeHOdF 1月 22 16:33 .org.chromium.Chromium.zeHY7u 1月 30 16:06 .org.chromium.Chromium.zfDntn 1月 27 17:21 .org.chromium.Chromium.zgnLs7 1月 24 20:18 .org.chromium.Chromium.zjBhRG 月 26 14:37 .org.chromium.Chromium.zlrTuH 1月 22 19:45 .org.chromium.Chromium.zo30kn 1月 27 16:57 .org.chromium.Chromium.zpog72 1月 29 18:27 .org.chromium.Chromium.zq2LNO 1月 27 12:04 .org.chromium.Chromium.zrOfIv 1月 25 16:21 .org.chromium.Chromium.zsyM3q 1月 28 18:39 .org.chromium.Chromium.ztdMmy 1月 30 15:51 .org.chromium.Chromium.zz6d1k
otn

2025/02/01 11:17

> tmp フォルダに大量のファイルが生成されてました > これを削除すると、再稼働できました それは対症療法で、ちゃんとした対策が必要かも知れません。 df /tmp のコマンドの出力はどうなってますか?
hidesroon

2025/02/03 01:59

ご確認ありがとうとございます 返信が遅れ申し訳ございません コマンドを実行した時ですが・・・ 下記の様になっておりました ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/xvda1 8.0G 7.6G 455M 95% / これを下記コマンドで削除すると スクリプトが動きました rm -r /tmp/.org.chromium.Chromium*
otn

2025/02/03 06:50 編集

なるほど。普通のディスク(HDDかSSD)ですね。/tmp はRAMDISK (tmpfs) の場合もあるので、もしそうなら容量が少ないだろうから、/tmp以外の場所に変更した方が良いのではないかと思っての質問です。 /dev/xvda1 8.0G 7.6G 455M 95% / ということは、ルートディレクトリと同じで、おそらく他のファイルも多数同居していると思われますので、ここが残り0になると多くのプロセスに影響が出ますので、「動かなくなってから消す」という受け身の対応でなく、「空き容量が一定以下になると警報を出す」とか「毎日/tmpの下をクリーンアップする(昨日以前のファイルを削除)」などが必要です。 ストレージサイズ合計が8GBということはないと思うので、df でストレージを全部出してみて、他にも /dev/xvda2 とか xvda3 とか普通のディスク(HDDかSSD)があって、余裕の大きいものがあれば、そっちを使うのもありです。例えば /var の下。ただし、その場合でも前段落の空き容量ゼロ防止策はした方が良いです。
hidesroon

2025/02/04 03:35 編集

ご確認ありがとうございます 今見ると、60% 超えてました 定期的に削除する様にします  ⇨ Cronで定期的に削除する処理を入れてみます 3分に1回動いているので これが原因だと思います >> 容量ゼロ防止策・・ こちら対応してみます アドバイスありがとうございます! 追記・・ 削除した直後に容量を確認すると 65%超えてます 他で使用している領域があるようです 残り、35% を Selenium と他のサービス?で 使用してるので、何らかの対応してみます >> 例えば /var こちらですが、できればtmp以外に出力させたいですが Seleniumがここを指定してるのかと思います こちらで変更することはできますでしょうか?
otn

2025/02/04 09:46

> こちらで変更することはできますでしょうか? 下記の変更方法は、少なくとも、私の書いた下記の意味を他人に説明できるレベルで理解している人向けです。理解した上で採用して下さい。 > df でストレージを全部出してみて、他にも /dev/xvda2 とか xvda3 とか普通のディスク(HDDかSSD)があって、余裕の大きいものがあれば、そっちを使うのもありです ★ 一時ファイルの場所変更方法 .org.chromium.Chromium~~ 等のファイルを /xxxxx/yyyyy 以下に作りたい場合、 質問掲載のコードだと、1行目の前か、4行目の後とかに下記2行を書きます。 他の一時ファイルも /xxxxx/yyyyy に作られます。 参考: https://docs.python.org/ja/3.13/library/tempfile.html import os os.environ["TMPDIR"] = "/xxxxx/yyyyy"
otn

2025/02/04 10:09

> 今見ると、60% 超えてました どういう内容が入っているパーティションか分からない状態で60%と言われても意味ないです。 もし業務用サーバーだと、どういうパーティション構成にして、それぞれどれくらいの容量にするかはきちんと設計が必要ですが、そういう設計をしてないということは、個人用のサーバーですよね? 個人の趣味(?)目的の場合は、事前に容量設計が難しいので、構成は適当で、あとはcronジョブでなんとかするくらいですかね。/boot と / のみとかでも。 バックアップなどの観点で、もっとパーティションを分けるのもありですが、まあ、手間と効果の比較で。
hidesroon

2025/02/05 01:33

ご確認ありがとうございます 色々と助言いただきありがとうございます 一時ファイル・・ですが スクレイピングの終了後にcsv作成して G-Drive に落としてます フォルダの1つを覗いてみると xxxx.crx3 ファイルがありました Google の特殊フォーマットの様です 色々とご教授いただきありがとうございました 自分なりに納得ができました (o_ _)o))
guest

回答1

0

自己解決

tmp/直下 大量のフォルダが生成されており
削除するとスクリプトが動きました

これが原因で下記の様な No Space が出ていたのだと思います
{'code': 65, 'message': 'No space left on device (os error 28)', 'driver_path': '', 'browser_path': ''}

https://stackoverflow.com/questions/77093335/oserror-errno-28-no-space-left-on-device-where-to-locate-chromedrivermanager

投稿2025/02/01 08:13

hidesroon

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.33%

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

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

質問する

関連した質問