es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo imprimir los resultados de Amazon después de buscar una frase usando Python, Selenium.

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

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://www.amazon.com.au/?&tag=hydramzkw0au-22&ref=pd_sl_6wcb7ezr9q_e&adgrpid=87712394315&hvpone=&hvptwo=&hvadid=414047633191&hvpos=&hvnetw=g&hvrand=17758126363033746916&hvqmt=e&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1000286&hvtargid=kwd-10573980&hydadcr=179_487&gclid=CjwKCAiA8bqOBhANEiwA-sIlNxQufQ7Vywkurf9_zmHedwoBR-vCcDaw7zLcvdHmtp23d7OxJeEgThoCxu8QAvD_BwE")

link = driver.find_element(By.ID, "twotabsearchtextbox")
link.send_keys("Wooden box")
link.send_keys(Keys.RETURN)

try:
    main = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "sg-col-inner"))
    )
    results = main.find_elements(By.CLASS_NAME, "sg-col-inner")
    for result in results:
        resultname = results.find_element(By.CLASS_NAME, "a-size-base-plus a-color-base a-text-normal")
        print(resultname)

except:
    driver.quit()

Tengo problemas con el bucle for, puedo buscar ‘Caja de madera’, pero no puedo imprimir los resultados que obtengo al buscar ‘Caja de madera’. Soy muy nuevo en Python y cualquier ayuda es apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas con el bucle for y la búsqueda de los nombres de los resultados:

    1. En lugar de resultname = results.find_element, debería ser resultname = result.find_element, de lo contrario se intenta llamar a la función find_element en la lista de resultados en lugar de en cada resultado individual.
    2. El nombre de la clase para los nombres de los resultados debería ser "a-size-base-plus a-color-base a-text-normal" sin los espacios entre las diferentes partes del nombre de la clase.

    Entonces, el código corregido para el bucle for debería ser:

    for result in results:
        resultname = result.find_element(By.CLASS_NAME, "a-size-base-plus a-color-base a-text-normal")
        print(resultname.text)
    

    Esto imprimirá el texto para el nombre de cada resultado de búsqueda.

Comments are closed.