web-dev-qa-db-fra.com

Obtenir le texte de plusieurs éléments avec la même classe dans Selenium for Python?

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

16
user3685742

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

32
Yi Zeng

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