Puppeteer不评估heroku上的网络应用程序



我在电报机器人上使用puppeteer从网络上获取信息。在当地,一切都很好,但问题是:

当试图获取URL的HTML时,给定的响应不是HTML文件,而是包含所有js文件的web应用程序。在我的本地机器上,我得到了HTML文件和所有需要的链接。

这是我的代码:

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[]
.......
})

PS--------------已将此回购添加到Heroku:

https://github.com/jontewks/puppeteer-heroku-buildpack

显然,当您使用puppeteer-extra时,还需要安装puppeteer库。

出于某种原因,它们都是依赖的,但不是自动安装的,所以Chromium引擎没有安装在Heroku上,它确实解释了它在我的本地机器上的工作原理——默认情况下,我的本地计算机有它。

相关内容

最新更新