gpt4 book ai didi

node.js - puppeteer 操作错误 : Navigation failed because browser has disconnected

转载 作者:行者123 更新时间:2023-12-03 23:05:39 38 4
gpt4 key购买 nike

我在带有 Node.JS 的 Google App Engine 上使用 puppeteer
每当我在应用引擎上运行 puppeteer 时,我都会遇到一个错误提示
由于浏览器已断开连接,导航失败!
这在本地环境中工作正常,所以我猜这是应用引擎的问题。

const browser = await puppeteer.launch({
ignoreHTTPSErrors: true,
headless: true,
args: ["--disable-setuid-sandbox", "--no-sandbox"],
});
这是我的应用引擎的 app.yaml 文件
runtime: nodejs12

env: standard

handlers:
- url: /.*
secure: always
script: auto
- 编辑 -
当我添加 --disable-dev-shm-usage 时它起作用参数,但它总是超时。这是我的代码。
const browser = await puppeteer.launch({
ignoreHTTPSErrors: true,
headless: true,
args: [
"--disable-gpu",
"--disable-dev-shm-usage",
"--no-sandbox",
"--disable-setuid-sandbox",
"--no-first-run",
"--no-zygote",
"--single-process",
],
});
const page = await browser.newPage();

try {
const url = "https://seekingalpha.com/market-news/1";
const pageOption = {
waitUntil: "networkidle2",
timeout: 20000,
};

await page.goto(url, pageOption);
} catch (e) {
console.log(e);
await page.close();
await browser.close();
return resolve("error at 1");
}

try {
const ulSelector = "#latest-news-list";
await page.waitForSelector(ulSelector, { timeout: 30000 });
} catch (e) {
// ALWAYS TIMEOUTS HERE!
console.log(e);
await page.close();
await browser.close();
return resolve("error at 2");
}
...

最佳答案

问题似乎出在应用引擎的内存容量上。
当内存不足以应对 puppeteer 爬行时,
它会自动生成另一个实例。
但是,新创建的实例具有不同的 puppeteer 浏览器。
因此,结果是 Navigation failed because browser has disconnected .
解决方案是简单地升级应用引擎实例,以便它可以通过单个实例处理抓取作业。
默认实例是F1,它有256M的内存,所以我升级到F4,它有1GB的内存,然后它不再显示错误信息。

runtime: nodejs12

instance_class: F4

handlers:
- url: /.*
secure: always
script: auto

关于node.js - puppeteer 操作错误 : Navigation failed because browser has disconnected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62891633/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com