使用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>
參考:
更多見解,請參閱以下資源:
注意:
關於Microsoft Edge 和Google Chrome 版本96,引入了對Selenium 影子根回傳值的變更。請參閱解決方案中提供的鏈接,以了解有關在不同程式語言中解決這些更改的更多資訊。
以上是如何使用 Selenium Python 從 #shadow-roots 中提取隱藏訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!