Получить текст из нескольких элементов с тем же классом в Selenium для Python?
Я пытаюсь очистить данные со страницы с загруженным 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'
.
Ответы
Ответ 1
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 здесь.
Ответ 2
Это возвращает список элементов:
all_spans = driver.find_elements_by_xpath("//span[@class='class']")
for span in all_spans:
print span.text