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.

Escribir un programa en Python con Selenium para extraer el ASIN de una página web de Amazon.

¿Alguien sabe cómo hacer para raspar el ASIN en esta parte del código fuente, por favor?
El ASIN siempre está en la misma parte del código fuente en la página web del producto.

He intentado:

asin_n = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//td[@class='prodDetAttrValue']"))).text

Y

asin_n = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "//td[@class='prodDetAttrValue']"))).text

Y

asin_n = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//td[@class='a-size-base prodDetAttrValue']"))).text

Y

asin_n = driver.find_element_by_css_selector('td.a-size-base.prodDetAttrValue').text

Pero no funciona, ¿alguien sabe cómo hacer para raspar el ASIN en esta parte, por favor?
¡Gracias por la respuesta, adiós!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es difícil proporcionar una solución exacta sin más contexto, pero aquí hay algunas sugerencias:

    • Intenta utilizar un XPath o selector CSS más específico para dirigirte al elemento que contiene el ASIN. Por ejemplo, si el ASIN siempre se encuentra en un elemento tr con un atributo data-dp-url, puedes usar driver.find_element_by_css_selector('tr[data-dp-url]').
    • Asegúrate de que el elemento esté realmente visible en la página antes de intentar extraer su texto. Puedes usar EC.visibility_of_element_located para esperar a que el elemento se vuelva visible, o EC.presence_of_element_located para esperar a que aparezca en el DOM.
    • Verifica si el elemento está dentro de un iframe u otro elemento que requiere cambiar de contexto antes de poder acceder a él. Utiliza driver.switch_to.frame para cambiar al contexto adecuado.

    Sin más información o acceso a la página web en cuestión, es difícil dar una respuesta más específica.

Comments are closed.