javascript - 几次迭代后异步 puppeteer 浏览器断开连接
问题描述
我在一个小案例中使用 puppeteer 测试了迭代。我已经阅读了 puppeteer 断开连接的常见原因是Node 脚本不等待 puppeteer 操作结束。因此,我将代码段中的所有函数都转换为异步函数,但没有帮助。
如果具有六次迭代的小案例工作,我将在我当前的项目中实现它,大约 50 次迭代。
'use strict';
const puppeteer = require('puppeteer');
const arrIDs = [8322072, 1016816, 9312604, 1727088, 9312599, 8477729];
const call = async () => {
await puppeteer.launch().then(async (browser) => {
arrIDs.forEach(async (id, index, arr) => {
await browser.newPage().then(async (page) => {
await page.goto(`http://somelink.com/${id}`).then(async () => {
await page.$eval('div.info > table > tbody', async (heading) => {
return heading.innerText;
}).then(async (result) => {
await browser.close();
console.log(result);
});
});
});
});
});
};
call();
解决方案
forEach
同步执行。forEach
用一个简单的 for 循环替换。
const arrIDs = [8322072, 1016816, 9312604, 1727088, 9312599, 8477729];
const page = await browser.newPage();
for (let id of arrIDs){
await page.goto(`http://somelink.com/${id}`);
let result = await page.$eval('div.info > table > tbody', heading => heading.innerText).catch(e => void e);
console.log(result);
}
await browser.close()
推荐阅读
- java - 从列表视图到 PDF 的数据
- python - 如何让 h2o 以非科学计数法返回结果
- c# - C# Socket 异常 - 无法建立连接,因为目标机器主动拒绝它
- javascript - “消息”错误:“禁止”尝试查询 Apollo Serverless Lambda 服务器
- c# - 有没有办法制作动态模型?
- javascript - 为什么这张图片没有旋转?
- kubernetes - 在具有固定域和端口的 GKE 中运行可扩展服务
- angular - 尽管从服务调用收集的产品显示在页面上,但接口日志未定义
- unix - 制作以破折号开头的 grep 搜索模式
- php - 使用 CodeIgniter 上传多个文件 - 偏移错误