Maison >développement back-end >Tutoriel Python >Comment extraire des informations cachées de #shadow-roots à l'aide de Selenium Python ?

Comment extraire des informations cachées de #shadow-roots à l'aide de Selenium Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-19 06:44:01427parcourir

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

Extraire des informations d'une #shadow-root à l'aide de Selenium Python

Dans le domaine du web scraping, extraire des données d'éléments dissimulés dans #shadow -les racines peuvent poser un défi important. Cet article explore les techniques pour surmonter cet obstacle à l'aide de Selenium Python.

Problème :

Considérez l'URL https://www.tiendasjumbo.co/buscar?q= mani dans une boutique en ligne. Pour extraire les étiquettes de produits et d'autres champs de ce site, un utilisateur a tenté l'approche suivante :

<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>

Cependant, cette approche a échoué, et le changement d'iframe s'est avéré tout aussi infructueux.

Solution :

La clé pour extraire des données de ce site réside dans la reconnaissance que les produits sont situés dans une #shadow-root. Pour accéder à ces éléments, Selenium fournit la méthode shadowRoot.querySelector(). Grâce à cette méthode, l'étiquette du produit peut être extraite à l'aide de la stratégie de localisation suivante :

<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>

L'exécution de ce script génère l'étiquette du produit :

<code class="text">La especial mezcla de nueces, maní, almendras y marañones x 450 g</code>

Références :

Pour plus d'informations, reportez-vous aux ressources suivantes :

  • Impossible de localiser l'élément de connexion dans #shadow-root (open) à l'aide de Selenium et Python
  • Comment localiser le champ Prénom dans la racine fantôme (ouverte) sur le site Web https://www.virustotal.com en utilisant Selenium et Python

Remarque :

Concernant Microsoft Edge et Google Chrome version 96, des modifications des valeurs de retour de la racine fantôme pour Selenium ont été introduites. Reportez-vous aux liens fournis dans la solution pour plus d'informations sur la gestion de ces changements dans différents langages de programmation.

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