问题标签 [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 - 如何从 PostgreSQL 中提取数据,处理,然后存储在 javascript 中?
我对高级 javascript 不太熟悉,正在寻找一些指导。我正在寻找使用puppeteer-cluster将网页内容存储到数据库中 这是一个起始示例:
看起来我可能必须使用pg 插件连接到数据库。推荐的方法是什么?
这是我的桌子:
我相信我必须将数据拉入一个数组(id 和 url),每次收到内容后,将其存储到数据库中(通过 id 和内容)。
node.js - 当我与之交互时,Puppeteer(Cluster)关闭页面
在 NodeJS v10.xx 环境中,当尝试从一些 HTML 代码创建 PDF 页面时,每次尝试使用它(setCacheEnabled、setRequestInterception 等)时都会遇到关闭页面问题:
我在某处读到这个问题可能是由于缺少一些等待引起的,但这看起来不像我的情况。
我没有直接使用 puppeteer,但是这个库在它之上创建了一个集群并处理进程:
javascript - Puppeteer 集群示例抛出错误:无法获取浏览器页面
我在puppeteer-cluster文档中使用这个例子
我在节点 v10.15.3 上运行它我试图将无头属性和 slowMo 传递给 puppeteer 选项。
我希望代码能够注销并创建页面的屏幕截图,但是,会发生几个 chrome 实例启动,它们不加载任何页面,然后控制台挂起并出现以下错误:
node.js - 使用不同的场景 Async/Await 多次运行 Puppeteer 测试
嗨,伙计们,我需要一些帮助来解决一个场景
- 我有一个数组,里面装满了 Google、Yahoo 100 个对象。
- 如果谷歌做 X
- 其他雅虎做Y
这很容易说 Java Selenium,只需使用 if 语句循环,然后启动停止浏览器,给定 puppeteer 异步运行我如何使用 Javascript 实现这一点?还使用 Jest。
我尝试使 foreach 循环异步以能够运行 await,但明显的问题是它一次启动所有浏览器。
想避免 .then 为 puppeteer 提供承诺链。
node.js - 有没有办法覆盖 puppeteer 集群中的“标签关闭”?
在我截屏之前,Puppeteer 集群关闭选项卡。
我正在使用具有 maxConcurrency 8 的 puppeteer 集群。我需要在每个页面加载后截屏 [Approx. 20000 个网址]。Page.screenshot 对我没有用。我的屏幕截图应该包括 URL 栏和桌面。它基本上就像一个完整的桌面截图。所以我使用 ImageMagick 来截屏,(和 xvfb 用于多屏幕管理)
问题是:
- 有时,在切换到右侧选项卡之前会截取屏幕截图。
- 空白屏幕截图,因为当前选项卡已关闭,尚未加载的选项卡出现在前面。
- 有时,由于所有选项卡都已关闭,因此无法截取屏幕截图会引发错误。
我正在做的是:当每个页面加载时,我调用 page.bringToFront 并生成一个 child_process,它使用 image magic import 命令截取桌面。
不想在页面加载后设置等待时间,nodejs ImageMagick 没有工作,promise 似乎也没有工作。
我不希望木偶操纵者自行关闭标签。相反,它是否可以在页面加载后给出回调事件,等待回调函数执行并返回然后关闭选项卡?
node.js - Puppeteer-cluster 使用选项卡并截图
我正在使用 puppeteer-clustor 和 imagemagick (convert) / xwd 命令截取完整桌面的屏幕截图。
需要具有页面可见部分的浏览器以及浏览器导航按钮和 URL。大多数时候我可以得到截图,但其他时候它确实失败了。
错误消息是选项卡已关闭屏幕截图已完成。请提出我做错了什么。
代码在 linux 上运行,X 在 DISPLAY:0.3 上运行。我可以看到
下面是我尝试过blockingWait的代码
node.js - Puppeteer 性能泄漏
我正在使用 puppeteer 和 puppeteer-cluster 来截取收到的 HTML 的屏幕截图。为了“绕过”Node.js 的单线程处理,我使用了几个 Docker 容器。
问题是它随机延长了渲染时间——一旦相同的 HTML 在 200 毫秒内渲染,下一次(相同的配置、环境等)它是 8.2 秒。Node 的日志不包含任何错误。
它有什么解决办法吗?
javascript - 如何处理 puppeteer-cluster[CONCURRENCY_BROWSER] 中的多个选项卡?
我正在尝试在以下条件下抓取 3 个网址
每个 url 需要在单独的浏览器中运行。
网址可能包含 2 个或更多要点击的链接
在相应浏览器(并行)的新选项卡中打开链接并切换到它并抓取内容。
换句话说,我试图在浏览器中打开一个 url,获取页面中的链接,根据在同一浏览器中获取的链接数量打开新选项卡,切换选项卡单击其中的按钮并获取确认消息。
我还需要并行运行 3 个 url。
我尝试了 CONCURRENCY_BROWSER 选项来并行运行 url,但我无法在新选项卡中打开链接。关于如何操作 puppeteer-cluster 中的选项卡的任何建议
我需要的是:
类型错误:cluster.newPage 不是函数
在 puppeteer 中,我曾经使用命令 await browser.newPage() 打开一个新选项卡
node.js - 无法在不阻塞 DigitalOcean 的情况下运行多个节点子进程
很长一段时间以来,我一直在努力在 DigitalOcean 上运行多个 Puppeteer 实例,但运气不佳。我可以使用puppeteer-cluster之类的工具同时运行 ~5 个,但由于某种原因,整个事情只是因为很少有用的消息而窒息。所以,我切换到生成约 5 个子进程而没有任何额外的库——只是 Puppeteer 本身。同样的问题。没有任何有用错误的扼流圈。
我能够在本地很好地运行所有这些工作,但是在我部署之后,我遇到了这些问题。所以,我的直觉是这是一个资源/性能问题,但我不能肯定地说。
我在 Digital Ocean 上运行 1GB 和 3CPU 的液滴。
基本上,我只是在寻找开始解决此类问题的方法。有没有办法可以确定我正在撞到资源墙?我已经尝试过 pm2 和 DO 仪表板图,但我觉得这些都遗漏了很多信息,否则我完全错过了其他东西。