![](/img/trans.png)
[英]How to extract text from div class using Selenium with Python
[英]How to extract text from multiple div class using Selenium with Python
我正在尝试从Page_inspect获取文本 class price-value
使用了 driver.find_element_by_xpath 和 WebDriverWait。
rateText=WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//div[starts-with(@class,"price")]//div[contains(@class,"price-value")]')))
for ratevalue in rateText:
print (ratevalue.text)
未找到结果:
追溯(最近调用最后):文件“D:\project\totempop\webscraping\asrPOP.py”,第 22 行,在 rateText=WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, '/ /div[starts-with(@class,"price")]//div[包含(@class,"price-value")]'))) 文件 "C:\Python310\lib\site-packages\selenium\ webdriver\support\wait.py",第 89 行,直到引发 TimeoutException(消息、屏幕、堆栈跟踪)selenium.common.exceptions.TimeoutException:消息:
提前致谢
可能你遇到了 XPath 的问题。你应该试试这个:'.//div[contains(@class,"price-value")]/text()'
你可以只使用这个:
WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "price-value")))
elements = driver.find_elements(By.CLASS_NAME, "price-value")
for element in elements:
print(element.text)
看起来你已经足够接近了,但你需要做一些小的调整,如下所示:
<div class="price">
有一个单独的类名值,因此您可以删除contains()
部分。
<strong class="price-value">
在父级<div>
中,因此您必须调整定位器策略。
理想情况下,要获取文本,您需要为visibility_of_element_located()引入WebDriverWait ,您可以使用以下任一定位器策略:
使用CSS_SELECTOR和文本属性:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.price div.price-line > strong.price-value"))).text)
使用XPATH和get_attribute("innerHTML")
:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='price']//div[@class='price-line']/strong[@class='price-value']"))).get_attribute("innerHTML"))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.