[英]Xpath and CssSelector not extracting data using Selenium and Python
[英]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 無法在網頁中找到該元素時會發生這種情況。
但我認為我指定的路徑是正確的。 請幫我。
提前致謝
這是我得到的例外
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_SELECTOR
和get_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"))
使用XPATH
和text屬性:
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
鏈接到有用的文檔:
get_attribute()
方法Gets the given attribute or property of the element.
text
屬性返回The text of the element.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.