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>
参照:
さらに詳しい情報については、次のリソースを参照してください:
注:
Microsoft Edge および Google Chrome バージョン 96 に関して、Selenium のシャドウ ルートの戻り値に変更が導入されました。さまざまなプログラミング言語でこれらの変更に対処する方法の詳細については、ソリューションに提供されているリンクを参照してください。
以上がSelenium Python を使用して #shadow-roots から隠された情報を抽出する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。