from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://www.amazon.in/SAMSUNG-Galaxy-S23-Mint-Storage/dp/B0CJXPYJC3/")
try:
price = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "a-price-whole"))
)
print(price.text)
finally:
driver.quit()
我相信这可能是因为浏览器在 selenium 提取数据之前关闭,但我尝试添加延迟,但仍然不起作用。
这是获取该信息的一种经过测试的方法:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument('disable-notifications')
chrome_options.add_argument("window-size=1280,1080")
browser = webdriver.Chrome(options=chrome_options)
wait = WebDriverWait(browser, 5)
url = 'https://www.amazon.in/SAMSUNG-Galaxy-S23-Mint-Storage/dp/B0CJXPYJC3/'
browser.get(url)
price = str(wait.until(EC.presence_of_element_located((By.XPATH, '//span[@class="a-price-whole"]'))).get_attribute('innerHTML')).split('<')[0]
print(price)
终端结果:
39,988
Selenium 文档可以在这里找到。