【Pythonスクレイピング】seleniumを使っていますが、find_element()でエラーが出ます。

始めに蛇足からです。
他の質問への回答の際に気づいたのですが、Selenium公式サイトによると、
https://www.selenium.dev/ja/documentation/webdriver/elements/locators/

class name class名に値を含む要素を探す (複合クラス名は使えない)

となっているので、(By.CLASS_NAME, "bt32 bt65")のような複合クラスの指定は規格外で、(By.CSS_SELECTOR, ".bt32.bt65")のようにCSSセレクタを使うのが正しいようです。ただ、現時点ではCSSセレクターに準じて(By.CLASS_NAME, "bt32.bt65")と書けば良いようです。

ここからが本題で、
(By.XPATH, '//div[@class="bt32 bt65"]')の指定方法は正しいです。これで見つからないのであれば、今回は(By.CSS_SELECTOR, ".bt32.bt65")であっても見つからないはず。

要素が見つからないのは、いろいろ原因が考えられます。
1.frameやiframeの中にある
driver.switch_to.window(frame要素)などとしてから、検索する

2.実は、Seleniumが見ているページが想定と違う
⇒ 意外とちょいちょいある質問
find_elementの直前でプログラムを一時的に止めて、その時点のブラウザ画面を見る

3.動的に生成されたクラス名/id名で、ページ表示毎にクラス名/id名が変わる
⇒ 毎回変わるクラス名/id名以外の方法で検索する

4.クラス名/id名以外でも、ページ表示毎や、Selenium経由の時に内容が変わる
find_elementの直前でプログラムを一時的に止めて、その時点のブラウザ画面を見る

コメントを投稿

0 コメント