问题标签 [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-cluster 直接从各种 HTML 字符串处理大量屏幕截图,并且响应应该在几毫秒内尽快完成。
由于为每个屏幕截图打开和关闭一个浏览器效率不高,我们想使用一个由 10 个浏览器组成的集群,我们看到它在处理速度方面给了我们想要的结果。
我的担忧来自内存堆积,我想问一下是否可以使用任何已知的最佳实践来解决这个问题?
例如:
- 集群中的浏览器可以刷新吗?
- 我们应该在每次截图后关闭页面吗?ETC...
谢谢!
node.js - 我如何使用 Jest 和 puppeteer-cluster
我目前正在为一个 web 应用程序进行 40 多个测试(它们可能需要 20 多分钟并且不幸会增长),并且正在考虑运行多个浏览器以便并行运行测试。
我目前正在尝试使用puppeter-cluster但没有运气(看不到多个浏览器实例并且断言总是通过)
我已经尝试过,但这似乎是实现此类事情的最接近的方式:
玩笑木偶配置:
PS:不幸的是,我需要将无头模式设置为 false(用于硬件加速)
javascript - 使用 Puppeteer 的 page.$$eval() 错误
我正在尝试使用page.$$eval()
从 a 获取数据<ul>
,将值存储在两个数组中,然后遍历数组以将数据放入键/值对中。我正在努力将数据放入数组中。
HTML 如下所示:
我的代码:
错误:
或者:
我猜这与浏览器(传递给的函数page.$$eval()
)/Node.js(两个数组)上下文有关。有没有更好的办法?
javascript - 正确循环多个链接
我对木偶师很陌生。我昨天开始,我正在尝试制作一个程序,它可以遍历一个 url,一个接一个地增量存储玩家 ID,并使用 neDB 保存玩家统计信息。有数千个链接需要翻阅,我发现如果我使用 for 循环,我的计算机基本上会崩溃,因为 1,000 个 Chromium 试图同时打开所有这些。有没有更好的方法或正确的方法来做到这一点?任何意见,将不胜感激。
javascript - 如何在 Pupeteer 中定位多个相同的“input[type="file"]”?
我在 pupeteer 中有一个页面,我正在尝试启动文件上传,它必须上传按钮。问题是启动文件上传的两个按钮具有相同的类型和选择器。此工作代码允许我完美地将文件上传到第一个文件输入。
现在我的问题是 - 有没有办法让我以编程方式在 pupeteer 的页面上定位类型文件的 SECOND 输入?因为它们都具有相同的文件选择器ID等输入类型。我可以在相同的代码中执行某种索引吗?我尝试了所有其他方法,由于选择器是相同的,这是我让第一个在页面上工作的唯一方法。
javascript - How do I combine puppeteer plugins with puppeteer clusters?
I have a list of urls that need to be scraped from a website that uses React, for this reason I am using Puppeteer.
I do not want to be blocked by anti-bot servers, for this reason I have added puppeteer-extra-plugin-stealth
I want to prevent ads from loading on the pages, so I am blocking ads by using puppeteer-extra-plugin-adblocker
I also want to prevent my IP address from being blacklisted, so I have used TOR nodes to have different IP addresses.
Below is a simplified version of my code and the setup works (TOR_port
and webUrl
are assigned dynamically though but for simplifying my question I have assigned it as a variable) .
There is a problem though:
The above setup works but is very unreliable and I recently learnt about Puppeteer-Cluster. I need it to help me manage crawling multiple pages, to track my scraping tasks.
So, my question is how do I implement Puppeteer-Cluster with the above set-up. I am aware of an example(https://github.com/thomasdondorf/puppeteer-cluster/blob/master/examples/different-puppeteer-library.js) offered by the library to show how you can implement plugins, but is so bare that I didn't quite understand it.
How do I implement Puppeteer-Cluster with the above TOR, AdBlocker, and Stealth configurations?
javascript - 使用 puppeteer 集群的无限循环(故意)
我对 puppeteer-cluster 很陌生。我的目标是无限地抓取 100 个站点的列表,所以一旦我到达第 100 个链接,脚本就会重新开始(理想情况下重用同一个集群实例)。有没有更好的方法或正确的方法来做到这一点?我在想故意有一个无限循环(和旋转元素)可能会更容易。任何意见,将不胜感激。
这是我的代码:
puppeteer-cluster - 使用持久集群时,我是否应该关闭 puppetter 集群任务关闭中的页面
我有一个已定义任务的集群。根据 中的示例README.md
,我有一个闭包,它接受一个页面实例作为参数。我导航到页面并捕获屏幕截图。我不对页面实例做任何其他事情。在README.md
示例中,有一个await
for idle 事件,然后集群关闭。但是我有一个我几乎不想关闭的集群。我应该在那种情况下更改我的关闭行为以关闭页面吗?
我怀疑我的服务中某处发生了内存泄漏,我正在调查的原因之一是集群是否在我使用完页面后关闭它们。我使用concurrency: Cluster.CONCURRENCY_CONTEXT
选项。
node.js - 如何使用 puppeteer 将画布保存为图像?
我正在尝试使用画布加载页面,然后将其另存为图像。
例如,这个页面。在 Chrome 上,我可以右键单击页面右上角带有圆圈的画布,然后单击保存图像。我想做同样的事情,但通过 NodeJS 和 Puppeteer。这可能吗?
到目前为止,我正在尝试通过
但是画布返回空值。
javascript - Puppeteer cluster.close() 在调用 cluster.queue() 后“崩溃”
长话短说,我制作了一个用于网络抓取的应用程序,为了让它一次能够同时运行超过 1 个进程(打开超过 1 个 Chromium),我使用了 puppeteer-cluster。我让它一次运行多个进程,但集群之后不会停止,它会永久运行。一路走来,遇到如下错误(一)
如果我这样使用它(2)
Anywho,主要问题是当代码到达集群关闭的行时(在代码的末尾,检查下面的代码),它会冻结在那里。不会返回任何错误,因为我试图捕捉它,但同时它也不会崩溃。
我一直在网上寻找解决方案,在 GitHub 上寻找修复程序,但似乎没有任何效果。我做错了什么,根本不会终止进程?PS:我添加了整个代码,希望它是相关的。