首頁  >  文章  >  後端開發  >  如何使用 Selenium Python 從 #shadow-roots 中提取隱藏訊息?

如何使用 Selenium Python 從 #shadow-roots 中提取隱藏訊息?

Patricia Arquette
Patricia Arquette原創
2024-10-19 06:44:01266瀏覽

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

使用Selenium Python 從#shadow-root 中提取資訊

在網頁抓取領域,從#shadow 中隱藏的元素中提取數據- 根可能會帶來重大挑戰。本文探討了使用 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在https://www.virustotal.com 網站內的shadow-root(開放)中找到名字欄位

注意:

關於Microsoft Edge 和Google Chrome 版本96,引入了對Selenium 影子根回傳值的變更。請參閱解決方案中提供的鏈接,以了解有關在不同程式語言中解決這些更改的更多資訊。

以上是如何使用 Selenium Python 從 #shadow-roots 中提取隱藏訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn