@PesyCorm

Парсинг html при помощи Selenium+Python, некорректный возврат?

Здравствуйте! Возникла трудность при попытке получить ссылки из атрибутов href элементов a.
Ссылка на страницу в репозитории на гите.(премодерация ругается, видимо из-за домена ресурса)

Воспользовался методом find_elements_by_class_name, а он вернул (для каждого элемента)
<selenium.webdriver.remote.webelement.WebElement (session="45a0063f8da9f78a78c38b201240c24a", element="6b43db73-2b1a-4886-9237-f493f7693539")>
. Соответственно, href из него получить не могу. Подскажите, в чем может быть ошибка? Возможно, есть какой-то другой способ получить ссылки из элементов?
Полный код на гите.
Спасибо за ответ!
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Соответственно, href из него получить не могу

То, что вы получили - называется class, и это нормально, найти href вы не можете не поэтому

Вы находите <div> с классом testCard. У div нет и никогда не было аттрибута href.
5ff98d78357b2611397432.jpeg
Конкретно в данном случае, у него есть лишь class.

Если вы ищите href с вложенного в div элемента а,
5ff98daca53cf162828278.jpeg
то нужно сначала для каждого найденного div найти элементы a, затем у них уже брать href.

for el in slide_elems:
    # Находим вложенный тег <a>
    tag_a = el.find_element_by_tag_name('a')
    print(tag_a.get_attribute('href'))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ScriptKiddo
Атрибут href есть только у якоря, который находится под testCard.
5ff8c7ac07093325434776.png

XPath для него:
//*[@class='testCard']/a

Здесь вы записываете в файл строковую реперезентацию списка с элементами WebElement. А вам требуется записывать атрибут 'href'.

def parse(self):
		self.go_to_questsions_page()
		slide_elems = self.driver.find_elements_by_class_name("testCard")
		f = open("text.txt", "w")
		f.write(str(slide_elems))
		for el in slide_elems:
			print(el.get_attribute('href'))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы