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
Freigeben: 2024-10-19 06:44:01
Original
403 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage