如何在Python的Selenium中获取多个相同类的元素文本?

25 投票
2 回答
62421 浏览
提问于 2025-04-18 07:53

我正在尝试从一个加载了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 个回答

6

这段代码会返回一个物品的列表:

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

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 文档,链接在 这里

撰写回答