问题标签 [puppeteer-cluster]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
352 浏览

node.js - 在用于负载测试的 cron 中使用 puppeteer-cluster 运行 cron 作业的最佳方式

我正在做负载测试我不希望服务器崩溃,当我启动单独的 puppeteer 实例并尝试运行两个查询时,它们每个都从 mysql db 获取 100mb 的数据,当我运行单个 puppeteer 时一切顺利,所以我研究并遇到了 puppeteer-cluster,现在基本上我需要每分钟运行一次 cron,并且每分钟每 cron 的请求数没有限制,那么这里的最佳实践是什么?

选项1:

选项 2:

我目前正在使用选项 2,如果我必须使用选项 1,我无法理解我是否必须无限期地保持浏览器打开,即何时关闭它

  • 请注意,每分钟可以有任意数量的项目,没有上限,并且每个项目最多可以持续 1 小时,因为我在那里设置了一些最坏的情况限制,因为请求可以加载大量数据 ~ 250mb(应该是块但我不能改变目前的架构,所以这有时对更大的数据库表没有响应)
0 投票
0 回答
122 浏览

javascript - 如何模块化 puppeteer-cluster 代码?

我对这个模块很陌生。我听说它比只使用 puppeteer 更好,因为它可以并行运行任务。无论如何,我需要帮助模块化我的代码。这是 npm 页面中的示例程序:

我想要的是这样的:

main.js 初始化集群

functions.js 有所有的任务

所以我就可以做这样的事情:

而不是在一个文件中做所有事情。我怎么能做这样的事情?

0 投票
1 回答
632 浏览

puppeteer - 导航失败,因为浏览器已断开连接

我遇到了以下问题。

这是错误消息:

这是我正在阅读的文档:

我的每项任务都是约 34 秒,所以大多数时候它会失败(30 秒后超时),但偶尔它会成功。

其他 GitHub/Stack Overflow 的答案也提到了await代码中的缺失也可能导致相同的错误消息。

0 投票
0 回答
719 浏览

javascript - Puppeteer-Cluster 不使用 nodeJS 工作者

我在 nodeJS 中以多工作模式使用 puppeteer-cluster,由于某种原因,只有一个工作人员正在打开我定义的并发浏览器的数量。其他的被忽略。我究竟做错了什么?

基本上我为每个工作人员启动了一个具有 2 个浏览器并发的集群,所以我希望它打开工作人员的数量(我定义的 cpu 数量)*每个工作人员 2 个浏览器,但实际上只打开了两个浏览器。

例如:假设我有 8 个内核,所以我要启动 8 个 worker,每个 worker 将启动两个 puppeteer 浏览器,总共 16 个。而不是在 headless: true 模式下调试它时,我看到只打开了两个浏览器。

部门:“puppeteer”:“^5.2.1”,“puppeteer-cluster”:“^0.22.0”

0 投票
1 回答
199 浏览

javascript - 使用 puppeteer 在现场看不到元素

站点中存在一个聊天开始按钮,如下所示 在此处输入图像描述

但是在 puppeteer 上运行自动化脚本时,此按钮不显示。即使我使用各种等待它加载。如下面的按钮没有出现

在此处输入图像描述

0 投票
0 回答
147 浏览

puppeteer - puppeteer 集群 _ 没有沙盒选项在启动时不起作用

这是我在 puppeteer 集群上的配置:

当我尝试在我的主机中运行时出现错误:

错误:无法启动浏览器进程![1014/132057.583562:ERROR:zygote_host_impl_linux.cc(90)] 不支持在没有 --no-sandbox 的情况下以 root 身份运行。请参阅 https://crbug.com/638180

但根据puppeter cluster的文档,您可以在 puppeteerOptions 中传递puppeteer选项

为什么传递选项不起作用?

0 投票
0 回答
245 浏览

puppeteer - puppeteer集群_如何防止关闭页面?

我很高兴找到 puppeteer 集群。这个库使爬行和自动化任务的生活变得轻松。tnx to Thomas Dondorf

根据 puppeteer 集群的作者所说,当任务完成时页面将立即关闭顺便说一句,这很好。但是,您需要分页的某些情况如何?

我的用例:我将尝试简要解释一下:

页面上有一些活动,在后台涉及一个套接字,用于将一些数据发送到前面。这个数据改变了圆顶,我需要捕获它。

这是我的代码:

这是页面部分的爬虫逻辑:

我搜索并发现在 js 中我们可以使用mutationObserver捕获 DOM 更改。并尝试了这个解决方案。但也没有工作。页面将因以下错误而关闭:

UnhandledPromiseRejectionWarning:错误:协议错误(Runtime.callFunctionOn):会话关闭。该页面很可能已关闭。

所以我在这里有两个选择:

1.mutationObserver

2.set interval 每 30 秒评估一次页面本身。

但它们不适合我的需要。所以知道如何克服这个问题吗?

0 投票
1 回答
307 浏览

javascript - Puppeteer-cluster 关闭浏览器本身

我使用 puppeteer-cluster + node js。我有一些脚本。我是新手

脚本运行到一半,然后结束,不再执行。我一直在寻找一个星期的解决方案,我不明白这是怎么回事。帮帮我,请在此处输入代码

脚本到达第 5 次迭代并结束 ((

0 投票
1 回答
78 浏览

node.js - 从监听器异步获取结果

我使用 puppeteer-cluster + node js。我是新来的。我有一些麻烦。我需要从站点获取 XHR 响应。我正在收听页面,但我无法将结果值写入变量。我需要在代码的另一部分使用该值。如何等待函数在侦听器中执行并将结果写入变量?

但是 dataCreation [id] 是不败的。因为我需要等待听众并从中获得结果。我该怎么做?谢谢你。

0 投票
1 回答
53 浏览

web-scraping - 如何将数据从多页存储到json?

谢谢你的关注,所以我写了一个小项目来抓取新闻网站并存储它们的主要文本。我尝试了许多解决方案来在我的项目中添加 json 而没有 consol.log 但总是在刮掉它之后只显示一个正文。所以我向你展示我的代码,这样你就可以帮助我如何让 json 包含所有三个新闻。