使用 Selenium 获取特定子元素

问题描述 投票:0回答:1

我目前正在 python 上使用 Selenium,但遇到了一个问题。现在,我正在亚马逊上寻找产品以获得价格。查找后,我为每个结果确定了一个特定的类别,如下所示。

在该类中,有一个称为“a-price-whole”的内容,其中包含产品的总价格。现在,我尝试像这样访问它们:

totalPrices = driver.find_elements(By.XPATH, "//div[@class='sg-col-4-of-24 sg-col-4-of-12 s-result-item s-asin sg-col-4-of-16 sg-col s-widget-spacing-small sg-col-4-of-20" "//span[@class='a-price-whole']")

但是,它给了我一个错误,说它找不到该元素。我的问题是,我如何以及应该如何访问它才能获得它们?

我尝试使用 XPath 访问它们,但似乎我做得不对。

python selenium-webdriver
1个回答
0
投票

请参阅下面的代码以及行内解释:

import time

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

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.amazon.es/s?k=3HB4131X2&__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2CQP9HLFX6PR7&sprefix=3hb4131x2%2Caps%2C118&ref=nb_sb_noss_1")

# below line will create explicit wait object with wait time of 10s
wait = WebDriverWait(driver,10)

# Click on Accept cookies button
wait.until(EC.element_to_be_clickable((By.ID, "sp-cc-accept"))).click()

# below 2 lines will store all product names and their prices in a list variable
totalProductNames = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//span[@class='a-size-base-plus a-color-base a-text-normal']")))
totalPrices = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//span[@class='a-color-base']")))

# below for loop will iterate through both the lists in parallel and print each of the product and price
for product, price in zip(totalProductNames,totalPrices):
    print(product.text, price.text)

time.sleep(10)

控制台结果:

Balay 3HB4131X2 - Horno, Multifunción, A, Encastrable, 60 cm, 71 l, 7 F, Aqualisis, Ap. Abatible, Acero inoxidable, Control Comfort, Reloj electrónico con programación de inicio y paro, 2022 319,99 €
Balay 3HB4131B2 - Horno, Multifunción, A, Encastrable, 60 cm, 71 l, 7 F, Aqualisis, Ap. Abatible, blanco, Control Comfort, Reloj electrónico con programación de inicio y paro, Lanzamiento 2022 348,88 €
Balay 3HB4131X2 - Horno, Multifunción, A, Encastrable, 60 cm, 71 l, 7 F, Aqualisis, Ap. Abatible & 3EB865FR - Placa de inducción de 60 cm de ancho 653,00 €
Balay 3HB4131X2 - Horno, Multifunción, A, Encastrable, 60 cm, 71 l, 7 F, Aqualisis, Ap. Abatible, Acero inoxidable, 2022 & 3EB864EN Placa de inducción de 60cm sin marco, 3 zonas de inducción 604,08 €
BOSCH - Horno Multifunción, 60 cm, Serie 4, Asistente de Limpieza con Agua, Negro, HBA512ES0 249,32 €
Balay 3HB4841X2 - Horno, Multifunción, A, Encastrable, 60 cm, 71 l, 7 F, Pirólisis y Aqualisis, Ap. Abatible, Acero inoxidable, Control Comfort, 10 recetas, Mandos Ocultables, Lanzamiento 2022 295,23 €
Balay 3HB5158N2 - Horno, Multifunción, A, Encastrable, 60 cm, 71 l, 7 F, Aqualisis, Ap. Abatible, Cristal Negro, Control Comfort, 10 recetas, Lanzamiento 2022 301,43 €
AEG BEE435111M Horno Eléctrico Multifunción, Integrable, Limpieza AquaClean, 9 Funciones, Cocción Multinivel, Display LCD Táctil, Ventilador XXL, 72 L de Capacidad, Inox, Clase A+ 252,75 €
Bosch - Horno Multifunción, 60 cm, Serie 6, Recetas Automáticas, Asistente de Limpieza con Agua, Negro, HBA5360S0 237,11 €
Horno BALAY 3HB5888A6 Gris Antracita Pirólisis HC 694,09 €
Horno Pirolítico Balay 3HB4821X2 71 L 526,61 €
Bosch HORNO HBA5740S0, Pirólisis, Mandos ocultables, 1 clipRaíl, Cristal negro/inox 316,49 €
Bosch HBG5780S0 Horno Pirolítico, Serie 6, 71 L, Hasta 275 °C 405,32 €
Balay 3HB2031X0 - Horno Eléctrico, 60x60 cm, Capacidad 66 L, Color Negro y Acero Inoxidable, 7 modos calentamiento / Aire 3D 304,67 €
UNIVERSALBLUE Horno Digital Cristal Negro | Clasificación Energética A | Guías Telescópicas + Bandeja + Rejilla 280,39 €
BALAY - Horno, 60 cm, 5 Funciones, Precalentamiento rápido, Negro, 3HB4000X2. 325,85 €
BALAY - Horno, 60 cm, 5 Funciones, Precalentamiento rápido, Negro, 3HB5000N2. 362,89 €
Horno Multifunci+¦n BALAY 3HB5000B2 71L Cristal blanco 363,60 €
Balay 3HB2030X0 - Horno (Medio, Horno eléctrico, 66 L, 66 L, 1 estanterías, Negro, Acero inoxidable) 254,44 €
Zanussi ZOHNB0X1 Horno 5 funciones, Grill Integrado, Mandos Fijos, Antihuellas, Inox, Clase A, 56 Litros [Clase de eficiencia energética A] 214,89 €

Process finished with exit code 0
© www.soinside.com 2019 - 2024. All rights reserved.