如何使用 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)
但这会返回一个空列表?
【问题讨论】:
请告诉我我的回答是否解决了您的问题? 【参考方案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_NAME 和 get_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_SELECTOR 和 get_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")))])
使用 XPATH 和 text 属性:
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表中显示?