Desarrollé un raspador que recupera información para mí, y lo tengo en heroku. funciona bien excepto que no puedo ver las actualizaciones en tiempo real (mi aplicación muestra los primeros valores obtenidos, no el real)
mi código:
const axios = require('axios'); const cheerio = require('cheerio'); const express = require('express'); const PORT = process.env.PORT || 8000; const app = express(); const myarr= [] app.get('/mylink', (req, res) =>{ axios.get(myUrl,{ responseEncoding: 'binary' }) .then((response) => { const html = response.data const $ = cheerio.load(html) $('tr', html).each(function (parentIdx) { const title = $(this).find('a.tw-hidden.lg\\:tw-flex.font-bold.tw-items-center.tw-justify-between').text() myarr.push({ title }) }) res.json(myarr) }).catch((err) => console.log(err)) }) app.listen(PORT, () => console.log(`Server avviato ed in ascolto sulla PORTA ${PORT}`))¿Cómo puedo obtener resultados actualizados?
No puede obtener resultados actualizados de inmediato cuando el sitio se actualiza a menos que sea el propietario del sitio web, en cuyo caso puede usar websockets o un enlace web. De lo contrario, su única otra opción es programar un cronjob (como han dicho otros) para verificar el sitio web en busca de cambios en un intervalo específico (una vez por día, una vez por hora, etc.). Para heroku, puede configurar esto fácilmente así:
#!/usr/bin/env node . El resto puede ser su código./bin (créelo si no existe) en el nivel raíz.myScript.js para que el comando completo sea $ myScript.js . Obviamente, myScript.js se refiere a cualquiera que sea el nombre de archivo de su secuencia de comandos.console.log .