css 如何从aria-label属性中提取文本?

zlwx9yxi  于 2023-01-18  发布在  其他
关注(0)|答案(3)|浏览(295)

所以基本上我是在尝试网页抓取,我需要从确实的网站上删除工作生活平衡评分,但我面临的挑战是我不知道如何从咏叹调标签中提取文本,所以我可以得到5星中的4.0分。

<div role="img" aria-label="4.0 out of 5 stars."><div class="css-eub7j6 eu4oa1w0"><div data-testid="filledStar" style="width:42.68px" class="css-i84nrz eu4oa1w0"></div></div></div>
zvokhttg

zvokhttg1#

您需要标识元素并使用get属性aria-label获取值。
如果您使用的是python. code,则

print(diver.find_element(By.XPATH, "//div[@role='img']").get_attribute("aria-label"))

更新:

print(diver.find_element(By.XPATH, "//div[@role='img' and @aria-label]").get_attribute("aria-label"))

或者

print(diver.find_element(By.XPATH, "//div[@role='img' and @aria-label][.//div[@data-testid='filledStar']]").get_attribute("aria-label"))
fv2wmkja

fv2wmkja2#

如果您可以找到元素属性值,则可以通过get_attribute()方法使用selenium进行检索。
假设您正在使用By.CSS_SELECTOR,并且定位器是css_selector
Python语法为:

aria_label_value = driver.driver.find_element(By.CSS_SELECTOR, css_selector).get_attribute("aria-label")

其他编程语言也可以做同样的事情,只需稍微修改语法

eit6fx6z

eit6fx6z3#

要检索 aria-label 属性的值,即 “4.0,共5颗星",您需要为visibility_of_element_located()引入WebDriverWait,并且可以使用以下locator strategies之一:

  • 使用 *CSS选择器 * 和 role="img"
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[role='img'][aria-label]"))).get_attribute("aria-label"))
  • 使用 XPATHdata-testid="filledStar"
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-testid='filledStar']//ancestor::div[@role='img' and @aria-label]"))).get_attribute("aria-label"))

*注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

您可以在Python Selenium - get href value中找到相关的讨论

相关问题