Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

299
Views
El valor de texto interno no está definido cuando se devuelve de la promesa a pesar de estar allí en la consola

Estoy usando Node JS, aquí está el código

 import fetch from 'node-fetch'; import { JSDOM } from 'jsdom'; import {Appartment} from "./models/Appartment.mjs" let applist = [] let multipleDivs = [] async function kijAppartments() { try { const kijCall = await fetch(`https://www.kijiji.ca/b-ville-de-montreal/appartement-4-1-2/k0l1700281?rb=true&dc=true`); if(!kijCall.ok) { throw new Error ( `HTTP error: ${kijCall.status}` ) } const response = await kijCall.text() const dom = new JSDOM(response) multipleDivs = dom.window.document.querySelectorAll(".info-container") // console.log(multipleDivs) return multipleDivs } catch(error) { console.log("Error Made") console.log(error) } } async function arrayOfApps() { await kijAppartments() .then(data => { data.forEach(div => { const newApp = new Appartment newApp.price = div.childNodes[1].innerText newApp.title = div.childNodes[3].innerText newApp.description = div.childNodes[7].innerText console.log(newApp) }) }) } await arrayOfApps()

Si ingresa a este enlace e intenta lo siguiente const aList = document.querySelectorAll(".info-container") , obtiene acceso a todos los nodos, innerHTML e innerText, todo funciona y le da acceso al valor real, pero para algunos razón, cuando trato de ejecutar este código en la terminal, el valor de todos mis objetos no está definido.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Debe usar textContent en lugar de innerText .

Aquí está mi solución:

 const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args)); const jsdom = require('jsdom'); const { JSDOM } = jsdom; class Appartment { price title description location } let multipleDivs = [] const appartments = [] function trim(text){ return text.replace(/(\r\n|\n|\r)/gm, "").trim() } async function fetchKijijiAppartments() { const url = `https://www.kijiji.ca/b-ville-de-montreal/appartement-4-1-2/k0l1700281?rb=true&dc=true` try { const kijijiRes = await fetch(url); if (!kijijiRes.ok) { throw new Error( `HTTP error: ${kijijiRes.status}` ) } const response = await kijijiRes.text() // console.log("DB: ", response) const dom = new JSDOM(response) multipleDivs = dom.window.document.querySelectorAll(".info-container") //console.log("DB: " multipleDivs) return multipleDivs } catch (error) { console.log("Error Made") console.log(error) } } async function scrapeAppartments() { await fetchKijijiAppartments() .then(data => { data.forEach(div => { const appartement = new Appartment appartement.price = trim(div.querySelector(".price").textContent) appartement.title = trim(div.querySelector(".title").textContent) appartement.description = trim(div.querySelector(".description").textContent) console.log("DB: ", appartement) appartments.push(appartement) }) }) } scrapeAppartments()
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!