Lors du web scraping de pages HTML dynamiques, en utilisant WebDriverWait avec EC.presence_of_element_located () nous permet d'attendre qu'un élément particulier apparaisse avant récupérer des données. Généralement, nous spécifions les éléments par leurs identifiants. Cependant, dans certains scénarios, nous pouvons avoir besoin de spécifier des éléments par leurs classes.
Le code d'origine tente de localiser un élément par sa classe en utilisant EC.presence_of_element_located((By.class, "ng-binding ng- scope") ):
element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
Cependant, cette syntaxe ne fonctionnera pas car elle ne respecte pas les règles de syntaxe du localisateur de WebDriver. La méthode By.class ne prend pas en charge plusieurs noms de classe comme argument.
Pour résoudre ce problème, nous pouvons utiliser la présence_of_element_located( ) avec By.CSS_SELECTOR ou By.XPATH pour spécifier à la fois les attributs ID et classe comme suit :
Utilisation de CSS_SELECTOR :
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
Utilisation de XPATH :
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
En combinant l'ID et la classe attributs, nous pouvons localiser précisément l'élément souhaité même lorsque seule la classe est spécifiée.
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!