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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

selenium

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

Q&A

1回答

4715閲覧

スクレイピングでif文中のエラー

53243

総合スコア6

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2022/03/09 13:12

編集2022/03/09 13:15

前提・実現したいこと

Pythonを使い、以下の4つのサイトをスクレイピングしています。
[リンク内容](https://brain-market.com/u/flmk/a/bcDOxYTOgoTZsNWa0JXY
https://brain-market.com/u/kuronekox/a/bQzNwkTOgoTZsNWa0JXY
https://brain-market.com/u/tatsumin-drums/a/bcDO4QTOgoTZsNWa0JXY
https://brain-market.com/u/yusuketenbaiman/a/bgTMzMTOgoTZsNWa0JXY)
これらのサイトでseleniumを使いボタンを押すという自動更新をしたところエラーが出ました。
恐らくforループのif文途中でクリックするものが見つからなかったことが関係しているでしょう。

発生している問題・エラーメッセージ

driver = webdriver.Chrome( DevTools listening on ws://127.0.0.1:59596/devtools/browser/b66fdb7e-e605-4e85-a248-041f413510cb c:/Users/genge/Desktop/python_practice/brain2.py:21: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead old_button = driver.find_element_by_css_selector('.layout.column.reviews_1f0Nl >.v-btn.v-btn--flat.v-btn--text.theme--light.v-size--default >.v-btn__content') c:/Users/genge/Desktop/python_practice/brain2.py:26: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead new_button = driver.find_element_by_css_selector('.layout.column.reviews_1f0Nl >.v-btn.v-btn--flat.v-btn--text.theme--light.v-size--default >.v-btn__content') [16340:14388:0309/215524.417:ERROR:device_event_log_impl.cc(214)] [21:55:24.418] USB: usb_device_handle_win.cc:1049 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F) [5820:13744:0309/215525.284:ERROR:device_event_log_impl.cc(214)] [21:55:25.284] USB: usb_device_handle_win.cc:1049 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F) Traceback (most recent call last): File "c:/Users/genge/Desktop/python_practice/brain2.py", line 31, in <module> old_button.click() File "C:\Users\genge\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 81, in click self._execute(Command.CLICK_ELEMENT) File "C:\Users\genge\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 710, in _execute return self._parent.execute(command, params) File "C:\Users\genge\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 424, in execute self.error_handler.check_response(response) File "C:\Users\genge\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document (Session info: chrome=99.0.4844.51) Stacktrace: Backtrace: Ordinal0 [0x00469943+2595139] Ordinal0 [0x003FC9F1+2148849] Ordinal0 [0x002F4528+1066280] Ordinal0 [0x002F6E04+1076740] Ordinal0 [0x002F6CBE+1076414] Ordinal0 [0x002F6F50+1077072] Ordinal0 [0x0032290C+1255692] Ordinal0 [0x003179D6+1210838] Ordinal0 [0x0033B9EC+1358316] Ordinal0 [0x00317474+1209460] Ordinal0 [0x0033BC04+1358852] Ordinal0 [0x0034BAF2+1424114] Ordinal0 [0x0033B806+1357830] Ordinal0 [0x00316086+1204358] Ordinal0 [0x00316F96+1208214] GetHandleVerifier [0x0060B232+1658114] GetHandleVerifier [0x006C312C+2411516] GetHandleVerifier [0x004FF261+560433] GetHandleVerifier [0x004FE366+556598] Ordinal0 [0x0040286B+2173035] Ordinal0 [0x004075F8+2192888] Ordinal0 [0x004076E5+2193125] Ordinal0 [0x004111FC+2232828] BaseThreadInitThunk [0x77166739+25] RtlGetFullPathName_UEx [0x77808E7F+1215] RtlGetFullPathName_UEx [0x77808E4D+1165] ERROR conda.cli.main_run:execute(33): Subprocess for 'conda run ['python', 'c:/Users/genge/Desktop/python_practice/brain2.py']' command failed. (See above for error) PS C:\Users\genge\Desktop\python_practice> [21172:10428:0309/215713.308:ERROR:gpu_init.cc(440)] Passthrough is not supported, GL is disabled, ANGLE is [18292:20176:0309/215721.202:ERROR:gpu_init.cc(440)] Passthrough is not supported, GL is disabled, ANGLE is

該当のソースコード

python

1from time import sleep 2from selenium import webdriver 3import pandas as pd 4d_list = [] 5 6 7base_urls = ['https://brain-market.com/u/flmk/a/bcDOxYTOgoTZsNWa0JXY', 'https://brain-market.com/u/kuronekox/a/bQzNwkTOgoTZsNWa0JXY', 'https://brain-market.com/u/tatsumin-drums/a/bcDO4QTOgoTZsNWa0JXY', 'https://brain-market.com/u/yusuketenbaiman/a/bgTMzMTOgoTZsNWa0JXY'] 8for base_url in base_urls: 9 options = webdriver.ChromeOptions() 10 options.add_argument('--headless') 11 12 driver = webdriver.Chrome( 13 executable_path='/Users/genge/Desktop/python_practice/tools2/chromedriver.exe', 14 options=options 15 ) 16 17 driver.implicitly_wait(10) 18 driver.get(base_url) 19 if base_url != base_urls[0]: 20 old_button = driver.find_element_by_css_selector('.layout.column.reviews_1f0Nl >.v-btn.v-btn--flat.v-btn--text.theme--light.v-size--default >.v-btn__content') 21 while base_url: 22 if base_url == base_urls[0]: 23 break 24 elif base_url != base_urls[0]: 25 new_button = driver.find_element_by_css_selector('.layout.column.reviews_1f0Nl >.v-btn.v-btn--flat.v-btn--text.theme--light.v-size--default >.v-btn__content') 26 if old_button != new_button: 27 break 28 else: 29 sleep(2) 30 old_button.click()

試したこと

いろいろ試した結果、
if文に誤りがあることには間違いないです。
ご尽力いただけると幸いです。

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

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

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

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

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

can110

2022/03/09 13:29

> ご尽力いただけると幸いです。 具体的な質問を書いていただけると幸いです。
guest

回答1

0

stale element reference: element is not attached to the page document

がエラーメッセージで、現在表示されているページの要素じゃない過去のページの要素をクリックしようとしています。
クリックやキーインなどの操作を行えるのは、その時点で表示されているページに対してだけです。
何をしたいのか不明なので、具体的なアドバイスは出来ません。

投稿2022/03/09 13:37

otn

総合スコア84557

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問