#python #selenium #getattribute
#python #selenium #getattribute
Вопрос:
Я использую Python 3, и мне нужна помощь в извлечении значения элемента из HTML-кода. Соответствующая часть кода веб-страницы выглядит следующим образом:
<span class="ng-isolate-scope" star-rating="4.61" size="22">
В настоящее время я использую Selenium и функцию get_attribute, но мне не удалось извлечь значение 4,61. Поскольку мне приходится перебирать несколько веб-страниц, соответствующая часть моего кода выглядит следующим образом:
stars=[]
i=driver.find_elements_by_xpath("//*[@star-rating]")
for y in i:
temp=str(y.get_attribute("value"))
stars.append(temp)
но это работает не так, как я ожидал. Не могли бы вы помочь мне с точки зрения того, что я здесь делаю неправильно? Большое спасибо за ваше время!
Ответ №1:
Получить star-rating
атрибут вместо value
:
temp = y.get_attribute("star-rating"))
Обратите внимание, что вам не нужно вызывать str()
результат get_attribute()
— вы получите значение атрибута в виде строки.
Вы также можете улучшить код и собрать оценки в одну строку, используя понимание списка:
stars = [elm.get_attribute("star-rating")
for elm in driver.find_elements_by_xpath("//*[@star-rating]")]
И, если вам нужны оценки в виде чисел с плавающей запятой, вызовите float()
:
stars = [float(elm.get_attribute("star-rating"))
for elm in driver.find_elements_by_xpath("//*[@star-rating]")]
И это было бы немного более лаконично с помощью селектора CSS:
stars = [float(elm.get_attribute("star-rating"))
for elm in driver.find_elements_by_css_selector("[star-rating]")]
Комментарии:
1. Это сработало отлично. Большое спасибо @alecxe! И спасибо за предложения по кодированию, они очень ценятся.