ホームページ  >  記事  >  バックエンド開発  >  Selenium Python を使用して #shadow-roots から隠された情報を抽出する方法?

Selenium Python を使用して #shadow-roots から隠された情報を抽出する方法?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-19 06:44:01379ブラウズ

How to Extract Hidden Information from #shadow-roots Using Selenium Python?

Selenium Python を使用して #shadow-root から情報を抽出する

Web スクレイピングの領域で、#shadow 内に隠された要素からデータを抽出する-roots は重大な課題を引き起こす可能性があります。この記事では、Selenium Python を使用してこの障害を克服するテクニックについて説明します。

問題:

URL https://www.tiendasjumbo.co/buscar?q= を検討してください。オンラインストアのマニ。このサイトから製品ラベルやその他のフィールドを抽出するために、ユーザーは次のアプローチを試みました:

<code class="python">from selenium import webdriver
import time
from random import randint

driver = webdriver.Firefox(executable_path="C:\Program Files (x86)\geckodriver.exe")
driver.implicitly_wait(10)
time.sleep(4)

url = "https://www.tiendasjumbo.co/buscar?q=mani"
driver.maximize_window()
driver.get(url)
driver.find_element_by_xpath('//h1[@class="impulse-title"]')</code>

しかし、このアプローチは失敗し、iframe の切り替えも同様に失敗したことがわかりました。

解決策:

このサイトからデータを抽出する鍵は、製品が #shadow-root 内にあることを認識することにあります。これらの要素にアクセスするために、Selenium はshadowRoot.querySelector() メソッドを提供します。このメソッドを使用すると、次のロケーター戦略を使用して製品ラベルを抽出できます:

<code class="python">driver.get('https://www.tiendasjumbo.co/buscar?q=mani')
item = driver.execute_script("return document.querySelector('impulse-search').shadowRoot.querySelector('div.group-name-brand h1.impulse-title span.formatted-text')")
print(item.text)</code>

このスクリプトを実行すると、製品ラベルが出力されます:

<code class="text">La especial mezcla de nueces, maní, almendras y marañones x 450 g</code>

参照:

さらに詳しい情報については、次のリソースを参照してください:

  • Selenium と Python を使用して #shadow-root (open) 内でサインイン要素を見つけることができません
  • Selenium と Python を使用して、Web サイト https://www.virustotal.com 内のシャドウルート (オープン) 内で名フィールドを見つける方法

注:

Microsoft Edge および Google Chrome バージョン 96 に関して、Selenium のシャドウ ルートの戻り値に変更が導入されました。さまざまなプログラミング言語でこれらの変更に対処する方法の詳細については、ソリューションに提供されているリンクを参照してください。

以上がSelenium Python を使用して #shadow-roots から隠された情報を抽出する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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