我在刮痧一个使用Nest.js模块的带有Puppeteer的网站
刮在我第一次调用GET方法时可以正常工作,但是之后它就不会再抓取了。这意味着我必须重新启动服务器每个为每个抓取
刮代码(简体):
@Injectable()
export class AppService {
constructor(@InjectBrowser() private readonly browser: Browser) {}
async getFoodoraRestaurantMenus(url: string): Promise<string> {
console.log("Calling method");
const page = await this.browser.newPage();
console.log('Never gets here the second time');
await page.goto(url);
const content = await page.evaluate(() => {});
await this.browser.close();
return JSON.stringify(content, null, 4);
}
}
第二次调用getFoodoraRestaurantMenus
时,我从未到达第二个控制台日志,因此从未打开新页面。我不确定我是否需要做一些比browser.close()
更多的事情,这是我所能找到的。
我不知道为什么每次我想执行刮取时都需要重新启动服务器。我非常感谢你的帮助。
谢谢。
如果您只想释放内存并重用同一个浏览器,您可以尝试只关闭页面而不是浏览器:
await page.close();