Estoy tratando de extraer información de las páginas de wikipedia con mi aplicación Node.js , usando jsdom . Aquí hay un ejemplo de lo que estoy haciendo:
jsdom.env({ url: "https://en.wikipedia.org/wiki/Bill_Gates", features: { FetchExternalResources: ['script'], ProcessExternalResources: ['script'], SkipExternalResources: false, }, done: function (err, window) { if (err) { console.log("Error: ", err) return; } var paras = window.document.querySelectorAll('p'); console.log("Paras: ", paras) } }); Lo raro es que querySelectorAll('p') devuelve una NodeList de elementos vacíos:
Paras: NodeList { '0': HTMLParagraphElement {}, '1': HTMLParagraphElement {}, '2': HTMLParagraphElement {}, '3': HTMLParagraphElement {}, '4': HTMLParagraphElement {}, '5': HTMLParagraphElement {}, '6': HTMLParagraphElement {}, '7': HTMLParagraphElement {}, ... 62': HTMLParagraphElement {} }¿Alguna idea de cuál podría ser el problema? ¡Gracias!
EDITAR:
Obtuve el mismo resultado al reemplazar window.document.querySelectorAll('p') con window.document.getElementsByTagName('p')
Los elementos no están vacíos, simplemente no le mostrarán el resultado en un registro de la consola. Tienes que acceder a los datos sobre ellos ( textContent para ello, por ejemplo)
Prueba esto:
Array.prototype.slice.call(dom.window.document.getElementsByTagName("p")).map(p => { console.log(p.textContent); }