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

192
Vistas
setInterval no funciona sin un error

Así que traté de ver un tutorial y hacer un raspador web, combiné como 5 códigos de tutoriales en mi código, así que supongo que es complicado.

Este es el código:

 const puppeteer = require('puppeteer-extra'); const StealthPlugin = require('puppeteer-extra-plugin-stealth'); const fs = require('fs'); const { html } = require('cheerio'); const cheerio = require('cheerio'); const { setInterval } = require('timers/promises'); require('dotenv').config(); const accountSid = process.env.TWILIO_ACCOUNT_SID; const authToken = process.env.TWILIO_AUTH_TOKEN; const client = require('twilio')(accountSid,authToken); puppeteer.use(StealthPlugin()); const oldData = "oldData"; async function scrape(){ const browser = await puppeteer.launch({ headless: true, defaultViewport:{ width: 1920, height: 1080 } }); const page = await browser.newPage(); await page.goto('page'); const pageData = await page.evaluate(() => { return{ width: document.documentElement.clientWidth, height: document.documentElement.clientHeight, html: document.documentElement.innerHTML, }; }) const $ = cheerio.load(pageData.html); const element = $(".accordion__header-inner:last"); console.log(element.text()); }; const handle = setInterval(scrape(), 4000); scrape();

Oculto algunas partes que no quería que se vieran.

Entonces, cuando ejecuto la función de código, registró el elemento dos veces. Cuando elimino el intervalo, solo funciona uno. Esa es la única diferencia, quiero registrar el elemento cada 5 segundos.

Cualquier ayuda es apreciada y espero que esta no sea una pregunta mal escrita.

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

0

En su setInterval , está ejecutando la función y pasando su valor de retorno como argumento, en lugar de pasar la función como argumento. Debería ser:

 const handle = setInterval(scrape, 4000);

Tenga en cuenta que no usará this dentro de la función, porque se llamará dentro del alcance setInterval . Si necesita usar this , use bind() :

 const handle = setInterval(scrape.bind(scrape), 4000);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que estás llamando al método "scrape()" en dos lugares. Una vez en el método SetInterval() y luego inmediatamente de nuevo en la línea siguiente. Ese parece ser tu problema.

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