Dans les scénarios de web scraping, il est souvent nécessaire de localiser des éléments sur une page Web dynamiquement. Pour surmonter les limites de BeautifulSoup dans la gestion du contenu dynamique, Selenium peut être intégré pour permettre d'attendre le chargement des éléments via JavaScript avant le scraping.
Considérez le code Python suivant :
element = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
Dans ce ligne de code, l'intention est de spécifier un nom de classe pour l'identification de l'élément. Cependant, une erreur peut se produire en raison de la présence de plusieurs noms de classe dans l'argument By.class. Selenium ne prend pas en charge la transmission de plusieurs noms de classe via By.class.
Pour résoudre ce problème, tenez compte des suggestions suivantes :
CSS_SELECTOR :
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
XPATH :
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
En incorporant ces modifications, vous pouvez localiser efficacement des éléments sur des pages Web qui se chargent dynamiquement via JavaScript, permettant ainsi un scraping Web réussi.
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!