J'essaie de gratter les données d'une page avec du contenu chargé en JavaScript. Par exemple, le contenu que je veux est au format suivant:
<span class="class">text</span>
...
<span class="class">more text</span>
J'ai utilisé la fonction find_element_by_xpath(//span[@class="class"]').text
mais elle n'a renvoyé que la première instance de la classe spécifiée. Fondamentalement, je voudrais une liste comme [text, more text]
Etc. J'ai trouvé la fonction find_elements_by_xpath()
, mais le .text
À la fin entraîne une erreur exceptions.AttributeError: 'list' object has no attribute 'text'
.
find_element_by_xpath
Renvoie un élément, qui a l'attribut text
.
find_elements_by_xpath()
renvoie tous les éléments correspondants, qui est une liste, vous devez donc parcourir et obtenir l'attribut text
pour chacun des éléments.
all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
print span.text
Veuillez vous référer à Selenium Python API docs ici pour plus de détails sur find_elements_by_xpath(xpath)
.
Cela renvoie une liste d'éléments:
all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
print span.text