使用Selenium提取元素的值

时间:2016-10-11 17:39:57

标签: 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 个答案:

答案 0 :(得分:3)

获取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 selector

会更简洁一些
stars = [float(elm.get_attribute("star-rating")) 
         for elm in driver.find_elements_by_css_selector("[star-rating]")]