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

jestjs - 无论如何使用 jest-puppeteer 和 puppeteer-cluster 的队列来处理测试断言?

我非常喜欢使用 puppeteer-cluster 获得的并发性。然而,我目前的目的是提高我的 jest-puppeteer 单元测试的性能。我有一个 url 数组,我遍历这些 url,并希望能够从任务中获得通过或失败,或者在任务中进行测试。不幸的是,当我使用 cluster.queue 并在任务中进行期望调用时,似乎 test.each 调用只是继续并最终表明测试已经通过,而不管断言结果是什么。

这是可以理解的,因为文档声明队列不会等待,但我希望也许有人可能对实现我想要做的事情有一个创造性的想法。通过使用 cluster.execute,我能够等待响应并依次处理结果,但我希望有某种回调或让 puppeteer-jest 处理来自任务内部的响应的方法。

不幸的是,jest 不允许 describe 异步运行,所以当我在 describe 块中添加 await.task 时,我得到一个错误,因为我可以在任务前加上 await 关键字。因此,我将 cluster.task 调用放在 beforeAll 处理程序中。在 test.each 循环中添加测试似乎是个坏主意,因为我相信它会在每次迭代时声明它。我现在要对此进行测试,但倾向于这也不是解决方案。如果有人有任何建议,我很想听听。谢谢!

0 投票
0 回答
40 浏览

puppeteer-cluster - Puppeteer集群错误处理,以及setTimeout处理

在一个页面中,我想查看电话号码是否有效,所以我将页面设置为等待电话号码无效时将出现的元素。

但是,如果发生错误,puppeteer 集群似乎会终止工作,我想知道如何跳过错误并继续工作。

另外,我有一个睡眠功能,基本上是一个返回承诺的 setTimeout,但 puppeteer 集群似乎忽略了睡眠功能。有没有办法绕过这个?

0 投票
0 回答
85 浏览

javascript - MySQL 流和管道数据

我正在使用 MySQL 来获取用于网络爬虫的 url。目前我使用 csv-stringify 获取数据,如下所示:

我在 process.stdout 中看到了数据,但是我如何使用数据本身,因为我需要将 url 和 id 传递给另一个函数进行处理。我不确定我需要用什么来代替 process.stdout 来满足我的需要。

数据基本上看起来像38391,ysu.edu

我有另一个刮板,我在其中流式传输 csv 文件,例如

这很好用,但我只是看不到我如何以与 puppeteer-cluster 相同的方式将 db 流传输到 puppeteer-cluster。

有任何想法吗?

0 投票
1 回答
61 浏览

node.js - 如何在无限循环中中断 puppeteer-cluster 执行?

我正在学习如何使用 Puppeteer 集群,我有一个问题。

如何使用按键中断在无限循环中运行的 puppeteer 集群执行?

代码将是这样的:

0 投票
0 回答
51 浏览

google-chrome - 在不集中注意力的情况下打开 Chrome (Puppeteer)

我正在使用 Puppeteer 启动多个浏览器 - 每隔几分钟,它就会重新打开浏览器。这很好用,除了它不断打开浏览器并集中标签,在我尝试使用计算机时打扰我。由于我正在尝试做的事情,我有一些具体的问题会破坏我能想出的任何想法,比如

  • 不要关闭浏览器,清除缓存!(我使用的插件不允许您像这样清除缓存,它会强制您关闭+重新启动浏览器)
  • 使用无头:真的!(同样,由于我的用例,该插件遗憾地不适用于 headless: true)

Tl;博士,我需要一种方法来打开不会集中注意力的浏览器(可以在 Puppeteer 中使用),而无需设置 headless:true

如果您有任何建议或想法,那就太棒了!

编辑:我的操作系统是 Windows

0 投票
0 回答
38 浏览

node.js - 是否可以更改新任务的代理

我只是想知道是否可以更改新任务的代理,我无法确定是否或如何完成。

我试图搜索是否可以完成,但我找不到任何东西。

我想要实现的是在每个循环完成后更改代理,但我似乎无法弄清楚如何或是否可以完成。

0 投票
0 回答
38 浏览

multithreading - puppeteer-cluster 是否使用所有内核?

我编写了一个脚本来一次抓取一个页面 60 次。

假设我的服务器能够处理负载,puppeteer-cluster 是否会自动在所有内核之间分配工作负载?

如果不是,那么您建议使用什么方法在所有系统内核之间分配工作负载?

0 投票
0 回答
36 浏览

express - 是否可以在每个 cluster.task() 中传递不同的 puppeteerOptions?

是否可以将唯一的 puppeteerOptions 传递到特定的 cluster.task 中?例如,我有一些任务想成为无头的,而有些则不想。我希望能够将特定任务设置为具有与集群初始化不同的参数。

0 投票
0 回答
26 浏览

caching - Puppeteer 连接到代理时不使用缓存

我有一个任务是打开浏览器,然后一遍又一遍地访问同一个页面。在测试网络使用情况后,我注意到没有代理它可以很好地缓存文件,但是一旦我连接到代理它就会停止缓存。我正在为每个工作人员使用具有不同 ip:port 的旋转代理,我想知道我应该怎么做才能保存宝贵的数据。

0 投票
0 回答
103 浏览

node.js - 使用 Jest 和 Puppeteer 运行多个测试

我有 2 个测试示例,当我同时运行它们时,似乎没有时间将它们都执行到最后。当我单独运行它们时,它们会一直运行到最后。

我读过 Puppeteer-cluster 可以帮助一次运行多个测试,但是该过程在 page.goto() 函数之后立即停止。我不确定这是否是解决我的问题的正确方法,因此请随时提供 Puppeteer-cluster 的其他解决方案。

测试1:

第二个测试几乎相同,只是我正在测试注册过程而不是登录。

我尝试了与此处相同的示例https://www.npmjs.com/package/puppeteer-cluster但测试在 page.goto 之后立即停止并以通过测试结束。

在不久的将来,我有 30-40 多个类似于 test1 的测试,我需要用一个命令而不是一个一个命令来运行它们。