Maison  >  Article  >  développement back-end  >  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
Linda Hamiltonoriginal
2024-10-19 06:38:301043parcourir

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>

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>

Sortie :

La especial mezcla de nueces, maní, almendras y marañones x 450 g

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:
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
Article précédent:Types de somme en PythonArticle suivant:Types de somme en Python