使用 Selenium 提取元素的值

Extracting value of an element using Selenium

我正在使用 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)

但它没有像我预期的那样工作。你能帮我看看我在这里做错了什么吗?非常感谢您的宝贵时间!

获取 star-rating 属性而不是 value:

temp = y.get_attribute("star-rating"))

请注意,您不必对 get_attribute() 的结果调用 str() - 您将获得字符串形式的属性值。

您还可以改进代码并使用列表理解在一行中收集评分:

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]")]