Selenium Python を使用したシャドウ ルートからの情報の抽出
指定された URL のコンテキスト内 https://www.tiendasjumbo.co/ Buscar?q=mani では、#shadow-root (オープン) 内の要素から情報を抽出することが課題となります。次のコード スニペットは問題を示しています:
<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>
解決策:
Web ページ内の製品はシャドウ ルート内にカプセル化されています。これらの要素にアクセスするには、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>
出力:
La especial mezcla de nueces, maní, almendras y marañones x 450 g
参照:
注:
Microsoft Edge および Google Chrome バージョン 96 では、シャドウ ルートの処理に変更が導入されました。最新情報については、次のリソースを参照してください:
以上がSelenium Python を使用してシャドウ ルートからデータを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。