问题标签 [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.
javascript - 使用 puppeteer-cluster 运行多个 puppeteer 执行
如何使用 puppeteer-cluster 运行多个并发执行?
我有 5 个最大并发,但是 await cluster.execute() 一次只运行 1 个。
我希望所有 5 个都同时执行。另一种方法是等待 cluster.queue(),但过了一会儿,内存被吃光了,因为没有办法检查当前队列长度/大小。
puppeteer - 通过 puppeteerOptions 在 puppeteer-cluster 中传递参数的正确方法
我正在尝试在我的代码中使用 args 来使用我拥有的代理服务。如果我完全删除了 args,一切运行良好,但如果我将它们放在那里,我会收到一条错误消息:错误:无法重新启动 chrome。我检查了多个示例并将其复制到我的代码中,但似乎失败了。关于如何正确实现这一点的任何想法?
代码:
node.js - 在关闭之前让 puppeteer-cluster 在页面事件上等待的问题
我目前正在设置一个 CI 环境来自动化我们团队在测试工具中运行的 e2e 测试。我在 Gitlab 上进行设置,目前正在使用 Puppeteer。我有一个从我们的测试工具触发的事件,该事件指定测试何时完成。现在我正在尝试“汇集”执行,这样我就不会用完所有资源或用完侦听器。我决定为这项任务尝试“puppeteer-cluster”。我快要让事情正常工作了,但是我似乎无法让它在关闭浏览器之前等待页面上的事件。在使用 puppeteer-cluster 之前,我将一个回调传递给我的函数,当自定义事件被触发(通过 ExposeFunction 注入)时,我会去调用它。该回调函数现在正在传递数据,因此不等待。我可以' 似乎没有找到让执行等待的方法,并希望有人可能在这里有一个想法。如果有人有任何建议,我很想听听。
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 queue
,await manager.start()
因为管理器的队列中总是只有一个项目,所以它停止,执行回调,然后将另一个函数添加到队列并重新启动管理器使函数出队。
问题:这工作正常,但它破坏了管理器类的观点,调用类不应该跟踪任务和结果,而只需将任务排队并让管理器使用第二个成功的结果功能。
现在理论足够了,是时候写一些代码了:)
代码是从中获得灵感/复制的,puppeteer-cluster
因为如果我编写了相同的代码,那将是一团糟:P,我想在打字稿中学习泛型。
当前实现调用者代码
javascript - 如何为 Typeform 编写 Puppeteer 测试?
我需要测试 Typeform 提交。但是当我尝试单击元素时,它会给出错误:UnhandledPromiseRejectionWarning: TimeoutError: Navigation timeout of 30000 ms exceeded
你可以在这里试试:https ://canyoufititcom.typeform.com/to/QXmDkX
怎么修?如何用 puppeteer 完成表格?
node.js - Puppeteer - 无法启动超过 2 个浏览器
userDataDir
嗨,我有一个简单的 puppeteer 脚本,每个实例使用不同的脚本。
我无法生成超过 2 个 puppeteer 实例。
这是代码:
我只能启动2
实例,在第三个实例上它只是加载一个空白页。
我也知道 puppeteer-cluster 但是我意识到使用 puppeteer-cluster 我无法设置userDataDir
,所以我必须使用普通的 puppeteer :(
有谁能帮忙吗?
puppeteer - 如何获取 puppeteer-cluster 浏览器的 WSendpoint
在一个需要:
- 使用登录凭据开始每个会话 + 通知/OTP
- 异步处理多个帐户
- 远程调试或监控会话
- 可以在打开的会话上以任意顺序请求 5+ 种不同的操作
我希望它是一个 puppeteer 集群浏览器,有一个远程调试端口来监控它,但无法集成 WsEndpoints
如何在 puppeteer-cluster 中拥有任何会话的 WSendpoint
(更多信息:我会将它们放在会话文件中,以便为我的下一个选择的后续操作提供其会话上的连接点
- localhost/StartScraper 创建 WSendpoint
- localhost/login==WSendpoint==>连接到现有会话做登录的东西
- localhost/listItems==WSendpoint==>连接到现有会话做 listItems 的东西...)
node.js - 在 ubuntu 机器上运行时出现 Puppeteer 错误
当我在 Ubuntu 上运行 puppeteer 时出现此错误:
这是我的傀儡选项:
另外,这是我使用的插件:
我尝试在运行代码之前杀死谷歌实例,但仍然没有工作
另外,我想提一下,它在使用“puppeteer-cluster”时有效
有人对此有任何想法或解决方案吗?非常感谢您的帮助!
node.js - 如何跨不同文件使用相同的 puppeteer-cluster 任务?
通过阅读其 GitHub 页面中的文档,看到了大量 puppeteer-cluster 的示例以及如何实例化它/创建任务,但我仍然无法弄清楚如何在我的应用程序的不同文件中导入相同的 puppeteer-cluster 实例,利用它
我可以在我的应用程序的其他文件中导入一个唯一的 puppeter-cluster 实例及其任务,并从中排队吗?
node.js - 如何使用启动参数(在无头模式下使用铬)提高 puppeteer 的性能?
嗨,我正在使用 puppeteer 来抓取网页(约 100 万条记录)。为了管理长时间的爬网,我正在使用 puppeteer-cluster 节点模块。
- 使用 puppeteer 启动 chromium 时已经启用了哪些标志?参数列表
- 有哪些参数可以让我提高 puppeteer 的性能?
目前我正在使用以下参数来启动铬: