问题标签 [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 回答
266 浏览

javascript - 使用 puppeteer-cluster 运行多个 puppeteer 执行

如何使用 puppeteer-cluster 运行多个并发执行?

我有 5 个最大并发,但是 await cluster.execute() 一次只运行 1 个。

我希望所有 5 个都同时执行。另一种方法是等待 cluster.queue(),但过了一会儿,内存被吃光了,因为没有办法检查当前队列长度/大小。

0 投票
1 回答
553 浏览

puppeteer - 通过 puppeteerOptions 在 puppeteer-cluster 中传递参数的正确方法

我正在尝试在我的代码中使用 args 来使用我拥有的代理服务。如果我完全删除了 args,一切运行良好,但如果我将它们放在那里,我会收到一条错误消息:错误:无法重新启动 chrome。我检查了多个示例并将其复制到我的代码中,但似乎失败了。关于如何正确实现这一点的任何想法?

代码:

0 投票
1 回答
251 浏览

node.js - 在关闭之前让 puppeteer-cluster 在页面事件上等待的问题

我目前正在设置一个 CI 环境来自动化我们团队在测试工具中运行的 e2e 测试。我在 Gitlab 上进行设置,目前正在使用 Puppeteer。我有一个从我们的测试工具触发的事件,该事件指定测试何时完成。现在我正在尝试“汇集”执行,这样我就不会用完所有资源或用完侦听器。我决定为这项任务尝试“puppeteer-cluster”。我快要让事情正常工作了,但是我似乎无法让它在关闭浏览器之前等待页面上的事件。在使用 puppeteer-cluster 之前,我将一个回调传递给我的函数,当自定义事件被触发(通过 ExposeFunction 注入)时,我会去调用它。该回调函数现在正在传递数据,因此不等待。我可以' 似乎没有找到让执行等待的方法,并希望有人可能在这里有一个想法。如果有人有任何建议,我很想听听。

0 投票
0 回答
40 浏览

javascript - 在队列中的第二个函数中使用第一个函数的返回数据

我有一个类,它管理一个函数队列并提供一个简单的 API manager.queue({data: foo}, function, callback),然后在我的渲染器进程中单击一个按钮,我调用它来对各种预定义函数进行排队,但这里的问题是最后一个函数可以使用来自第一个功能。

我最初尝试的是:
起初我将返回数据存储在results: any[] = []回调中的一个变量中,然后当我想将第二个任务排队时,我会简单地manager.queue({data: results[0], function2, callback);.

现在,显然这不起作用,因为 JavaScript 是按值传递的,并且result[0]是在队列时传递的,而不是在函数执行时从数组中读取值

当前实现:
目前我延迟排队,直到排队功能完成。即我创建了一组任务,它们调用manager.queue....而不是直接排队,然后在我的回调函数中tasks.shift()() //which adds a the function to queueawait manager.start()因为管理器的队列中总是只有一个项目,所以它停止,执行回调,然后将另一个函数添加到队列并重新启动管理器使函数出队。

问题:这工作正常,但它破坏了管理器类的观点,调用类不应该跟踪任务和结果,而只需将任务排队并让管理器使用第二个成功的结果功能。

现在理论足够了,是时候写一些代码了:)

代码是从中获得灵感/复制的,puppeteer-cluster因为如果我编写了相同的代码,那将是一团糟:P,我想在打字稿中学习泛型。

当前实现调用者代码

0 投票
0 回答
39 浏览

javascript - 如何为 Typeform 编写 Puppeteer 测试?

我需要测试 Typeform 提交。但是当我尝试单击元素时,它会给出错误:UnhandledPromiseRejectionWarning: TimeoutError: Navigation timeout of 30000 ms exceeded

你可以在这里试试:https ://canyoufititcom.typeform.com/to/QXmDkX

怎么修?如何用 puppeteer 完成表格?

0 投票
0 回答
74 浏览

node.js - Puppeteer - 无法启动超过 2 个浏览器

userDataDir嗨,我有一个简单的 puppeteer 脚本,每个实例使用不同的脚本。

我无法生成超过 2 个 puppeteer 实例。

这是代码:

我只能启动2实例,在第三个实例上它只是加载一个空白页。

我也知道 puppeteer-cluster 但是我意识到使用 puppeteer-cluster 我无法设置userDataDir,所以我必须使用普通的 puppeteer :(

有谁能帮忙吗?

0 投票
0 回答
209 浏览

puppeteer - 如何获取 puppeteer-cluster 浏览器的 WSendpoint

在一个需要:

  • 使用登录凭据开始每个会话 + 通知/OTP
  • 异步处理多个帐户
  • 远程调试或监控会话
  • 可以在打开的会话上以任意顺序请求 5+ 种不同的操作

我希望它是一个 puppeteer 集群浏览器,有一个远程调试端口来监控它,但无法集成 WsEndpoints

如何在 puppeteer-cluster 中拥有任何会话的 WSendpoint

(更多信息:我会将它们放在会话文件中,以便为我的下一个选择的后续操作提供其会话上的连接点

  • localhost/StartScraper 创建 WSendpoint
  • localhost/login==WSendpoint==>连接到现有会话做登录的东西
  • localhost/listItems==WSendpoint==>连接到现有会话做 listItems 的东西...)
0 投票
1 回答
120 浏览

node.js - 在 ubuntu 机器上运行时出现 Puppeteer 错误

当我在 Ubuntu 上运行 puppeteer 时出现此错误:

这是我的傀儡选项:

另外,这是我使用的插件:

我尝试在运行代码之前杀死谷歌实例,但仍然没有工作

另外,我想提一下,它在使用“puppeteer-cluster”时有效

有人对此有任何想法或解决方案吗?非常感谢您的帮助!

0 投票
0 回答
83 浏览

node.js - 如何跨不同文件使用相同的 puppeteer-cluster 任务?

通过阅读其 GitHub 页面中的文档,看到了大量 puppeteer-cluster 的示例以及如何实例化它/创建任务,但我仍然无法弄清楚如何在我的应用程序的不同文件中导入相同的 puppeteer-cluster 实例,利用它

我可以在我的应用程序的其他文件中导入一个唯一的 puppeter-cluster 实例及其任务,并从中排队吗?

0 投票
0 回答
380 浏览

node.js - 如何使用启动参数(在无头模式下使用铬)提高 puppeteer 的性能?

嗨,我正在使用 puppeteer 来抓取网页(约 100 万条记录)。为了管理长时间的爬网,我正在使用 puppeteer-cluster 节点模块。

  1. 使用 puppeteer 启动 chromium 时已经启用了哪些标志?参数列表
  2. 有哪些参数可以让我提高 puppeteer 的性能?

目前我正在使用以下参数来启动铬: