Во-первых, elem.get_attribute('a href')
проблематично, поскольку 'a href'
не является допустимым атрибутом.Вместо этого вы хотите использовать elem.get_attribute('href')
.
Однако это не та ошибка, с которой вы столкнулись.
Сообщение об ошибке (TypeError: 'FirefoxWebElement' object is not iterable
) подразумевает, что ваш итеративный ввод (hrefs
) имеет тип FirefoxWebElement
, что можетне может использоваться с пониманием списка, так как один FirefoxWebElement
не повторяется.Вместо одного элемента вам нужно использовать список элементов в вашем понимании списка.(Понимание списка создает список из другого входного итерируемого).Ваше понимание должно быть примерно таким:
hrefs = [elem.get_attribute('href') for elem in elements]
Пример:
Вопрос неопределенный, но вы, вероятно, пытаетесь создать список ссылок на веб-странице.Чтобы получить список всех ссылок, общий шаблон:
- создать веб-драйвер
- перейти на страницу
- найти все элементы, которые представляют теги привязки
- извлекает атрибут
href
из каждого элемента и сохраняет их в списке
Это можно сделать с помощью следующего кода:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://some_url')
elements = driver.find_elements_by_tag_name('a')
hrefs = [elem.get_attribute('href') for elem in elements]
Обратите внимание, что find_elements_by_tag_name('a')
возвращает список из WebElement
, который я использую в последующем понимании списка.Также обратите внимание, что используемый метод find_elements_by_tag_name
(множественное число).Это отличается от find_element_by_tag_name
(единственного числа), в котором будет размещен только один элемент.