Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

157
Vistas
¿Cómo puedo obtener 1 matriz que contiene muchos objetos para crear un archivo JSON a partir de mi código?

Tengo este sitio web del que quiero extraer datos.

Desde la página 1, hay 30 elementos, la página 2, 30 elementos, y así sucesivamente hasta la última página.

Lo que quiero (contendrá todos los datos de muchas páginas):

 [ // All push go into 1 array { animeURL: "animeURL", animeTitle: "animeTitle" }, { animeURL: "animeURL", animeTitle: "animeTitle" }, ... ]

Desde mi código, logré obtener lo que quiero, pero el problema es que está siendo separado por muchas matrices debido a diferentes impulsos, supongo.

Lo que obtengo en console.log:

 // Array from the first push match with first loop [ { animeURL: "animeURL", animeTitle: "animeTitle" }, { animeURL: "animeURL", animeTitle: "animeTitle" }, ] // Array from the first push + second push match with second loop. [ { animeURL: "animeURL", animeTitle: "animeTitle" }, { animeURL: "animeURL", animeTitle: "animeTitle" }, ] // ... array from page 3, 4, 5, 6, ...

Aquí está mi código:

 const PORT = 8000 const axios = require('axios') const cheerio = require('cheerio') const express = require('express') const app = express() function fetchAnimeData() { let animeData = [] for (i = 1; i<3; i++){ let url = `https://animehay.club/loc-phim/W1tdLFtdLFtdLFtdXQ==/trang-${i}.html`; axios(url) .then(response =>{ const html = response.data const $ = cheerio.load(html, {xmlMode: true}) $('.movie-item', html).each(function(){ const animeUrl = $(this).find('a').attr('href') const animeTitle = $(this).find('a').attr('title') animeData.push({ animeUrl, animeTitle }) }) console.log(animeData) }).catch(err => console.log(err)) } } fetchAnimeData() app.listen(PORT, ()=> {console.log(`Server is running on PORT: ${PORT}`)})

Intenté mover la variable animeData o dejar que sea una variable global y console.log, algunos solo obtienen [], algunos seguirán siendo los mismos que el problema que ocurrió, ¿cómo puedo console.log e imprimir el resultado que quiero, que es solo 1 matriz que contiene muchos datos de páginas?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debes hacer un seguimiento de tus promesas:

 let jobs = []

y en cada ciclo

 jobs.push(axios(url) ...etc )

Al final, espera a que se resuelvan todos los trabajos:

 Promise.all(jobs).then(()=>{ console.log(animeData); })

Promise.all

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda