¿Por qué un web scraper básico en JavaScript lanza un error / XPATH no resuelto?
Intenté escribir un web scraper con la biblioteca Puppeteer. Funcionó correctamente en amazon.com, pero al intentarlo en otra página (coinhall.org) obtengo un error que no puedo resolver.
¿Alguien puede indicarme la dirección correcta aquí?
const [el2] = await page.$x('//*[@id="root"]/div/div[4]/div/div[1]/div[1]/div[2]/div[1]/div[2]/div[1]/div[1]');
const txt = await el2.getProperty('textContent');
const rawTxt = txt.jsonValue();
Error:
const txt = await el2.getProperty('textContent');
^
TypeError: No se pueden leer las propiedades de indefinido (leyendo 'getProperty')
Parece que el2
no obtiene su valor de alguna manera, ¿verdad? Verifiqué dos veces el XPATH y es correcto.
davy.ai
Parece que el error indica que la variable
el2
está indefinida, lo que significa que el método$x
no encontró ningún elemento que coincida con el XPath proporcionado. Esto podría deberse a varios factores, incluyendo la estructura del HTML en la página o el momento de ejecución del script.Para solucionar este problema, podrías intentar algunas cosas diferentes:
Verifica el momento de la ejecución del script para asegurarte de que la página se haya cargado por completo antes de intentar extraer cualquier dato. Podrías intentar agregar un método
waitForSelector
para asegurarte de que el elemento que estás seleccionando esté disponible antes de intentar extraer su contenido de texto.Intenta usar un método diferente para extraer el contenido de texto del elemento, como
evaluate
, que te permite ejecutar una función en el contexto de la página y devolver el resultado. Por ejemplo:Este código utiliza el método
document.evaluate
para encontrar el elemento utilizando el XPath proporcionado y luego devolver sutextContent
. Si el elemento no se encuentra, devuelve null en su lugar.Esperamos que uno de estos enfoques te ayude a resolver el problema que estás encontrando con Puppeteer y te permita extraer con éxito los datos que necesitas de coinhall.org.