Estoy usando titiritero en mi bot de Telegram para obtener cosas de la web. A nivel local, todo funciona bien, pero aquí está el truco:
Al intentar obtener el HTML de la URL, la respuesta dada no es el archivo HTML, sino la aplicación web con todos los archivos js. En mi máquina local: obtengo el archivo HTML con todos los enlaces necesarios.
Ese es mi código:
return await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: true, }).then(async browser => { const page = await browser.newPage() page.setJavaScriptEnabled(true) await page.goto(targetUrl) await page.waitForTimeout(2000) const data = await page.$$eval(SELECTORS, (res) => { return res.map(r => { return r.getAttribute('ATRR') }) }) as never as string[] ....... })PD -------------- ya agregué este repositorio a Heroku:
https://github.com/jontewks/puppeteer-heroku-buildpackAparentemente, cuando usas puppeteer-extra , también necesitas instalar la biblioteca de puppeteer .
Por alguna razón, ambos dependen PERO no se instalan automáticamente, por lo que el motor Chromium no se instaló en Heroku y explica cómo funciona en mi máquina local, que lo tiene de forma predeterminada.