簡體   English   中英

如何使用 Selenium 和 Python 從多個 div class 中提取文本

[英]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)
    • 使用XPATHget_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM