在网站开发过程中,我使用puppeteer + NodeJs + Heroku创建了一个webscraper应用程序,该应用程序从另一个网站页面下载数据。
在主页上,用户将URL放入输入框,然后使用按钮提交
在异步功能中的发布请求中,脚本会在页面中运行,当页面上未命中时,将使用结果呈现新页面
const webAddress= req.body.webaddress;
(async () => {
// Extract
const extractingatlanok = async url => {
// Scrape the data we want
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (request) => {...
});
await page.goto(url);
const ingatlanokOnPage = await page.evaluate(() =>....
);
await page.close();
// Recursively scrape the next page
if (ingatlanokOnPage.length < 1) {
// Terminate if no ingatlanok exist
return ingatlanokOnPage
} else {...
// Go fetch the next page ?page=X+1
}
};
const browser = await puppeteer.launch({... });
const ingatlanok = await extractingatlanok(firstUrl);
// Todo: Update database
res.render("list", {...
});
await browser.close();
})();
当网站上的点击数过高时,我遇到了Heroku超时h12错误,并且我发现它遇到了30秒超时限制
在heroku上,我找到了将是一项后台任务的解决方案,但是我不知道如何采用它。任何帮助如何启动它将不胜感激。应该将哪一部分移到工作器上,以及如何从那里使用它们