ホームページ >バックエンド開発 >Python チュートリアル >Selenium と Python を使用して複数のクラス名を持つ Web 要素を効率的に見つけるにはどうすればよいですか?

Selenium と Python を使用して複数のクラス名を持つ Web 要素を効率的に見つけるにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-11 18:57:13237ブラウズ

How Can I Efficiently Locate Web Elements with Multiple Class Names Using Selenium and Python?

Selenium と Python を使用したクラス名による要素の検索

Web スクレイピング シナリオでは、多くの場合、Web ページ上の要素を見つけることが必要になります。ダイナミックに。動的コンテンツの処理における BeautifulSoup の制限を克服するために、Selenium を統合して、スクレイピングの前に JavaScript 経由で要素がロードされるのを待機できるようにすることができます。

次の Python コードを検討してください。

element = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))

この中でコード行の目的は、要素を識別するためのクラス名を指定することです。ただし、By.class 引数内に複数のクラス名が存在すると、エラーが発生する可能性があります。 Selenium は、By.class を介して複数のクラス名を渡すことをサポートしていません。

解決策

この問題に対処するには、次の提案を検討してください:

  • presents_of_element_located() の代わりに、visibility_of_element_located() のいずれかを使用します。または element_to_be_clickable() を使用して要素をより正確に操作します。
  • 次のコマンドを使用して、要素を識別するための ID 属性と CLASS 属性を組み合わせます。テクニック:

CSS_SELECTOR:

element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))

XPATH:

element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))

これらの変更を組み込むことで、 JavaScript を通じて動的に読み込まれる Web ページ上の要素を効果的に見つけることができ、Web の成功を可能にします。スクレイピング。

以上がSelenium と Python を使用して複数のクラス名を持つ Web 要素を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。