如何使用 selenium 提取类值并保存在 csv 中?

Posted

技术标签:

【中文标题】如何使用 selenium 提取类值并保存在 csv 中?【英文标题】:How Can I extract class value and save in csv using selenium? 【发布时间】:2022-01-19 08:55:28 【问题描述】:

如何使用 selenium 和 python 提取值,我的最终目标是将此值存储在 csv 中。

我尝试过的:

#element=  driver.find_element_by_xpath("//*[@class='rt-tr-group']")
elements = driver.find_elements_by_class_name("product-form__price")
for value in elements:
    print(value.text)

但这会返回一个空列表?

html

【问题讨论】:

请告诉我我的回答是否解决了您的问题? 【参考方案1】:

您好像错过了等待/延迟。 试试这个

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".product-form__price")))
time.sleep(0.5)
elements = driver.find_elements_by_class_name("product-form__price")
for value in elements:
    print(value.text)

您将需要这些导入:

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

并用

初始化wait对象
wait = WebDriverWait(driver, 20)

【讨论】:

为这个特定的选择器获取一个超时异常,即使上面的一切都在工作。奇怪 你能分享一个指向那个页面的链接吗?【参考方案2】:

打印内部文本,例如$53.37你需要为visibility_of_all_elements_located()诱导WebDriverWait,你可以使用以下Locator Strategies之一:

使用 CLASS_NAMEget_attribute("innerHTML"):

print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "product-form__price")))])

使用 CSS_SELECTORget_attribute("textContent"):

print([my_elem.get_attribute("textContent") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "span.product-form__price")))])

使用 XPATHtext 属性:

print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//span[@class='product-form__price']")))])

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

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

您可以在How to retrieve the text of a WebElement using Selenium - Python找到相关讨论


参考文献

链接到有用的文档:

get_attribute() 方法Gets the given attribute or property of the element. text 属性返回 The text of the element. Difference between text and innerHTML using Selenium

【讨论】:

在所有三种方法中都出现超时异常。知道是什么原因造成的吗?

以上是关于如何使用 selenium 提取类值并保存在 csv 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 POST 检索 <textarea> 值并保存到文件中?

如何保存单个值并重新打开它们以供以后使用?

如何从所有用户 ID (UID) 中获取特定值并保存在 RecyclerView Firebase UI

如何从多个SQL表中获取值并在html / php表中显示?

如何读取 JSON 文件、更改一些值并保存它。使用 FS/Javascript [重复]

如何在 Grails 2.2 中设置域类值的默认值?