Maison > développement back-end > Tutoriel Python > Comment extraire des données d'une racine fantôme à l'aide de Selenium Python ?

Comment extraire des données d'une racine fantôme à l'aide de Selenium Python ?

Linda Hamilton
Libérer: 2024-10-19 06:38:30
original
1112 Les gens l'ont consulté

How to Extract Data from a Shadow Root Using Selenium Python?

Extraction d'informations d'une racine fantôme à l'aide de Selenium Python

Dans le contexte de l'URL fournie https://www.tiendasjumbo.co/ buscar?q=mani, extraire des informations à partir d'éléments au sein d'une #shadow-root (ouverte) présente un défi. L'extrait de code suivant illustre le problème :

<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>
Copier après la connexion

Solution :

Les produits de la page Web sont encapsulés dans une racine fantôme. Pour accéder à ces éléments, la méthode shadowRoot.querySelector() doit être utilisée. Le code suivant illustre cette stratégie :

<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>
Copier après la connexion

Sortie :

La especial mezcla de nueces, maní, almendras y marañones x 450 g
Copier après la connexion

Références :

  • [Impossible de localiser l'élément de connexion dans #shadow-root (open) à l'aide de Selenium et Python](https://stackoverflow.com/questions/66779988/unable-to-locate-the-sign-in-element-within- shadow-root-open-using-selenium-a)
  • [Comment localiser le champ Prénom dans shadow-root (open) sur le site Web https://www.virustotal.com en utilisant Selenium et Python] (https://stackoverflow.com/questions/66820107/how-to-locate-the-first-name-field-within-shadow-root-open-within-the-website)

Remarque :

Microsoft Edge et Google Chrome version 96 ont introduit des modifications dans la gestion de la racine fantôme. Pour des informations mises à jour, veuillez vous référer aux ressources suivantes :

  • Java : https://gist.github.com/chandrashekar4242/c2ef0878241f737cc89ec1878d60f974
  • Python : https://gist.github.com/hongtaocao/6409059fd2bb8d250f925b6b68c3a660
  • C# : https://gist.github.com/skcheidt/4a6a8bca561b403db94c7264a5a247 38
  • Rubis : https://gist.github.com/yuusuke-tanaka1/3493c57d228f759be374aeb0b64e51d9

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal