从Selenium for Python中获取具有相同类的多个元素的文本?

时间:2014-05-29 00:36:02

标签: python selenium xpath selenium-webdriver webdriver

我正在尝试从包含JavaScript内容的页面中抓取数据。例如,我想要的内容采用以下格式:

<span class="class">text</span>
...
<span class="class">more text</span>

我使用了find_element_by_xpath(//span[@class="class"]').text函数,但它只返回了指定类的第一个实例。基本上,我想要一个像[text, more text]等列表。我找到了find_elements_by_xpath()函数,但最后的.text会导致错误exceptions.AttributeError: 'list' object has no attribute 'text'

2 个答案:

答案 0 :(得分:26)

find_element_by_xpath返回一个元素,该元素具有text属性。

find_elements_by_xpath()返回所有匹配的元素,这是一个列表,因此您需要遍历并获取每个元素的text属性。

all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
    print span.text

有关find_elements_by_xpath(xpath)的详细信息,请参阅Selenium Python API文档here

答案 1 :(得分:0)

这将返回项目列表:

all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
    print span.text