Heim >Backend-Entwicklung >Python-Tutorial >Wie extrahiere ich versteckte Informationen aus #shadow-roots mit Selenium Python?

Wie extrahiere ich versteckte Informationen aus #shadow-roots mit Selenium Python?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-19 06:44:01424Durchsuche

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

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:

  • Das Anmeldeelement konnte in #shadow-root (offen) mit Selenium und Python nicht gefunden werden
  • So finden Sie das Feld „Vorname“ im Shadow-Root (offen) auf der Website https://www.virustotal.com mit Selenium und Python

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn