问题标签 [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 投票
1 回答
508 浏览

javascript - 如何从 PostgreSQL 中提取数据,处理,然后存储在 javascript 中?

我对高级 javascript 不太熟悉,正在寻找一些指导。我正在寻找使用puppeteer-cluster将网页内容存储到数据库中 这是一个起始示例:

看起来我可能必须使用pg 插件连接到数据库。推荐的方法是什么?

这是我的桌子:

我相信我必须将数据拉入一个数组(id 和 url),每次收到内容后,将其存储到数据库中(通过 id 和内容)。

0 投票
2 回答
3389 浏览

node.js - 当我与之交互时,Puppeteer(Cluster)关闭页​​面

在 NodeJS v10.xx 环境中,当尝试从一些 HTML 代码创建 PDF 页面时,每次尝试使用它(setCacheEnabled、setRequestInterception 等)时都会遇到关闭页面问题:

我在某处读到这个问题可能是由于缺少一些等待引起的,但这看起来不像我的情况。

我没有直接使用 puppeteer,但是这个库在它之上创建了一个集群并处理进程:

https://github.com/thomasdondorf/puppeteer-cluster

0 投票
2 回答
2027 浏览

javascript - Puppeteer 集群示例抛出错误:无法获取浏览器页面

我在puppeteer-cluster文档中使用这个例子

我在节点 v10.15.3 上运行它我试图将无头属性和 slowMo 传递给 puppeteer 选项。

我希望代码能够注销并创建页面的屏幕截图,但是,会发生几个 chrome 实例启动,它们不加载任何页面,然后控制台挂起并出现以下错误:

0 投票
1 回答
672 浏览

node.js - 使用不同的场景 Async/Await 多次运行 Puppeteer 测试

嗨,伙计们,我需要一些帮助来解决一个场景

  1. 我有一个数组,里面装满了 Google、Yahoo 100 个对象。
  2. 如果谷歌做 X
  3. 其他雅虎做Y

这很容易说 Java Selenium,只需使用 if 语句循环,然后启动停止浏览器,给定 puppeteer 异步运行我如何使用 Javascript 实现这一点?还使用 Jest。

我尝试使 foreach 循环异步以能够运行 await,但明显的问题是它一次启动所有浏览器。

想避免 .then 为 puppeteer 提供承诺链。

0 投票
2 回答
838 浏览

node.js - 我想在 puppeteer-cluster 中创建无限循环

我想在 puppeteer-cluster 中创建无限循环

我的代码

但是大约 30 秒后,它导致空闲,我该怎么办?

0 投票
1 回答
448 浏览

node.js - 有没有办法覆盖 puppeteer 集群中的“标签关闭”?

在我截屏之前,Puppeteer 集群关闭选项卡。

我正在使用具有 maxConcurrency 8 的 puppeteer 集群。我需要在每个页面加载后截屏 [Approx. 20000 个网址]。Page.screenshot 对我没有用。我的屏幕截图应该包括 URL 栏和桌面。它基本上就像一个完整的桌面截图。所以我使用 ImageMagick 来截屏,(和 xvfb 用于多屏幕管理)

问题是:

  1. 有时,在切换到右侧选项卡之前会截取屏幕截图。
  2. 空白屏幕截图,因为当前选项卡已关闭,尚未加载的选项卡出现在前面。
  3. 有时,由于所有选项卡都已关闭,因此无法截取屏幕截图会引发错误。

我正在做的是:当每个页面加载时,我调用 page.bringToFront 并生成一个 child_process,它使用 image magic import 命令截取桌面。

不想在页面加载后设置等待时间,nodejs ImageMagick 没有工作,promise 似乎也没有工作。

我不希望木偶操纵者自行关闭标签。相反,它是否可以在页面加载后给出回调事件,等待回调函数执行并返回然后关闭选项卡?

0 投票
1 回答
1120 浏览

node.js - Puppeteer-cluster 使用选项卡并截图

我正在使用 puppeteer-clustor 和 imagemagick (convert) / xwd 命令截取完整桌面的屏幕截图。

需要具有页面可见部分的浏览器以及浏览器导航按钮和 URL。大多数时候我可以得到截图,但其他时候它确实失败了。

错误消息是选项卡已关闭屏幕截图已完成。请提出我做错了什么。

代码在 linux 上运行,X 在 DISPLAY:0.3 上运行。我可以看到

下面是我尝试过blockingWait的代码

0 投票
1 回答
371 浏览

node.js - Puppeteer 性能泄漏

我正在使用 puppeteer 和 puppeteer-cluster 来截取收到的 HTML 的屏幕截图。为了“绕过”Node.js 的单线程处理,我使用了几个 Docker 容器。

问题是它随机延长了渲染时间——一旦相同的 HTML 在 200 毫秒内渲染,下一次(相同的配置、环境等)它是 8.2 秒。Node 的日志不包含任何错误。

它有什么解决办法吗?

0 投票
2 回答
3269 浏览

javascript - 如何处理 puppeteer-cluster[CONCURRENCY_BROWSER] 中的多个选项卡?

我正在尝试在以下条件下抓取 3 个网址

  1. 每个 url 需要在单独的浏览器中运行。

  2. 网址可能包含 2 个或更多要点击的链接

  3. 在相应浏览器(并行)的新选项卡中打开链接并切换到它并抓取内容。

换句话说,我试图在浏览器中打开一个 url,获取页面中的链接,根据在同一浏览器中获取的链接数量打开新选项卡,切换选项卡单击其中的按钮并获取确认消息。

我还需要并行运行 3 个 url。

我尝试了 CONCURRENCY_BROWSER 选项来并行运行 url,但我无法在新选项卡中打开链接。关于如何操作 puppeteer-cluster 中的选项卡的任何建议

我需要的是:

类型错误:cluster.newPage 不是函数

在 puppeteer 中,我曾经使用命令 await browser.newPage() 打开一个新选项卡

0 投票
2 回答
1158 浏览

node.js - 无法在不阻塞 DigitalOcean 的情况下运行多个节点子进程

很长一段时间以来,我一直在努力在 DigitalOcean 上运行多个 Puppeteer 实例,但运气不佳。我可以使用puppeteer-cluster之类的工具同时运行 ~5 个,但由于某种原因,整个事情只是因为很少有用的消息而窒息。所以,我切换到生成约 5 个子进程而没有任何额外的库——只是 Puppeteer 本身。同样的问题。没有任何有用错误的扼流圈。

我能够在本地很好地运行所有这些工作,但是在我部署之后,我遇到了这些问题。所以,我的直觉是这是一个资源/性能问题,但我不能肯定地说。

我在 Digital Ocean 上运行 1GB 和 3CPU 的液滴。

基本上,我只是在寻找开始解决此类问题的方法。有没有办法可以确定我正在撞到资源墙?我已经尝试过 pm2 和 DO 仪表板图,但我觉得这些都遗漏了很多信息,否则我完全错过了其他东西。