簡體   English   中英

Selenium 不使用 xpath 提取信息

[英]Selenium not extracting info using xpath

我正在嘗試使用硒從亞馬遜網站中提取一些信息。 但是我無法在 selenium 中使用 xpath 抓取該信息。

在下圖中,我想提取突出顯示的信息。 在此處輸入圖片說明

這是我正在使用的代碼

try:
    path = "//div[@id='desktop_buybox']//div[@class='a-box-inner']//span[@class='a-size-small')]"
    seller_element = WebDriverWait(driver, 5).until(
        EC.visibility_of_element_located((By.XPATH, path)))
except Exception as e:
    print(e)

當我運行這段代碼時,它顯示有一個錯誤, seller_element = WebDriverWait(driver, 5).until( EC.visibility_of_element_located((By.XPATH, path)))但沒有說明它是什么異常。

我嘗試在網上查找,發現當 selenium 無法在網頁中找到該元素時會發生這種情況。

但我認為我指定的路徑是正確的。 請幫我。

提前致謝

[編輯-1]

這是我得到的例外

Message:
//div[class='a-section a-spacing-none a-spacing-top-base']//span[class='a-size-small a-color-secondary']

XPath 可能是這樣的。 你可以縮短這個。

CSS 選擇器可以是等等。

.a-section.a-spacing-none.a-spacing-top-base
.a-size-small.a-color-secondary

我認為原因是 xpath 表達式不正確。

以下面的元素為例,表示span有兩個類:

<span class="a-size-small a-color-secondary">

因此, span[@class='a-size-small')將不起作用。

取而代之的是,您可以使用 xpath 作為

//span[contains(@class, 'a-size-small') and contains(@class, 'a-color-secondary')]

或 cssSelector 作為

span.a-size-small.a-color-secondary

亞馬遜正在根據您所居住的國家/地區更新其內容,因為我點擊了您提供的鏈接,在那里我沒有找到您正在尋找的元素,因為該商品在印度沒有銷售。

所以簡而言之,如果您坐在印度並試圖找到您的元素,它並不存在,但是當您將位置更改為“美國”時。 它出現在那里。

解決方案 - 更改位置

要打印元素的來自 Amazon.com 和由 Amazon.com 銷售Ships,您必須為visibility_of_element_located()引入WebDriverWait ,您可以使用以下任一定位器策略

  • 使用CSS_SELECTORget_attribute()

     print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.a-section.a-spacing-none.a-spacing-top-base > span.a-size-small.a-color-secondary"))).get_attribute("innerHTML"))
  • 使用XPATHtext屬性:

     print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='a-section a-spacing-none a-spacing-top-base']/span[@class='a-size-small a-color-secondary']"))).text)
  • 注意:您必須添加以下導入:

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

您可以在如何使用 Selenium 檢索 WebElement 的文本 - Python 中找到相關討論


奧特羅

鏈接到有用的文檔:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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