Extrahieren von Informationen aus einer #Schattenwurzel mit Selenium Python
Im Bereich Web Scraping das Extrahieren von Daten aus Elementen, die in #Schatten verborgen sind -Wurzeln können eine große Herausforderung darstellen. In diesem Artikel werden die Techniken zur Überwindung dieses Hindernisses mit Selenium Python untersucht.
Problem:
Bedenken Sie die URL https://www.tiendasjumbo.co/buscar?q= Mani aus einem Online-Shop. Um Produktetiketten und andere Felder von dieser Website zu extrahieren, versuchte ein Benutzer den folgenden Ansatz:
<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>
Dieser Ansatz scheiterte jedoch, und der Wechsel der Iframes erwies sich als ebenso erfolglos.
Lösung :
Der Schlüssel zum Extrahieren von Daten von dieser Website liegt in der Erkenntnis, dass sich die Produkte innerhalb einer #Schattenwurzel befinden. Um auf diese Elemente zuzugreifen, stellt Selenium die MethodeshadowRoot.querySelector() bereit. Mit dieser Methode kann das Produktetikett mithilfe der folgenden Locator-Strategie extrahiert werden:
<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>
Beim Ausführen dieses Skripts wird das Produktetikett ausgegeben:
<code class="text">La especial mezcla de nueces, maní, almendras y marañones x 450 g</code>
Referenzen:
Weitere Einblicke finden Sie in den folgenden Ressourcen:
Hinweis:
In Bezug auf Microsoft Edge und Google Chrome Version 96 wurden Änderungen an den Shadow-Root-Rückgabewerten für Selenium eingeführt. Weitere Informationen zum Umgang mit diesen Änderungen in verschiedenen Programmiersprachen finden Sie unter den in der Lösung bereitgestellten Links.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich versteckte Informationen aus #shadow-roots mit Selenium Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!