我目前正在學習 Selenium 并希望在 BestBuy 上練習。我無法弄清楚如何通過 XPATH 或使用 Selenium 的 CLASSNAME 來獲取價格。
我究竟做錯了什么?我不斷收到的錯誤是 Selenium 無法找到該元素。有人可以指出為什么 Selenium 找不到元素的方向嗎?
百思買鏈接
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(r"Desktop\Selenium\chromedriver.exe")
website = 'https://www.bestbuy.com/site/apple-10-2-inch-ipad-latest-model-with-wi-fi-64gb-space-gray/4901809.p?skuId=4901809'
driver.get(website)
title = driver.find_element(By.CLASS_NAME,'sku-title')
price = driver.find_element(By.XPATH,'//*[@id="pricing-price-2768792"]/div/div/div/div/div/div[1]/div[1]/div/div/span[1]')
status = driver.find_element(By.CLASS_NAME,'fulfillment-add-to-cart-button')
status = status.text
print(price.text)
uj5u.com熱心網友回復:
主要問題是屬性的后綴是動態的,并且會不時更改或請求請求。
嘗試改變你的選擇策略,并找到一些不那么動態的東西來實作你的目標。例如css selectors:
driver.find_element(By.CSS_SELECTOR,'[data-sticky-media-gallery] .priceView-hero-price span')
注意: 結果也依賴于您正在抓取的國家/地區,因此我必須單擊我們的鏈接,以獲取最終產品頁面
driver.find_element(By.CLASS_NAME,'us-link').click()
例子
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(r"Desktop\Selenium\chromedriver.exe")
website = 'https://www.bestbuy.com/site/apple-10-2-inch-ipad-latest-model-with-wi-fi-64gb-space-gray/4901809.p?skuId=4901809'
driver.get(website)
title = driver.find_element(By.CLASS_NAME,'sku-title')
price = driver.find_element(By.CSS_SELECTOR,'[data-sticky-media-gallery] .priceView-hero-price span')
status = driver.find_element(By.CLASS_NAME,'fulfillment-add-to-cart-button')
status = status.text
print(price.text)
輸出
$329.99
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/473985.html
