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

Patricia Arquette
Libérer: 2024-10-19 06:44:01
original
376 Les gens l'ont consulté

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

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

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

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!

source:php
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