首页 > 解决方案 > Puppeteer,与 node.js 交换缓冲区

问题描述

puppeteer 内部运行的页面下载图像。打电话时page.evaluate,必须先将某些图像写入磁盘,然后再对其进行其他操作。

最好的方法是什么?能够从在 puppeteer 中运行的浏览器中编写这些图像吗?将缓冲区从 puppeteer 发送到 node.js?

注意:其中一些图像可能是结果画布操作,因此它们不是请求的结果。

标签: node.jspuppeteer

解决方案


有几种可能的解决方案:

1. 如果页面允许cors,您可以将这些图像发送到您的后端服务器。使用类似 2 的东西 。另一种选择是从页面获取所有图像并将它们传递回服务器。这里还有一些可能的实现: 2.1。您可以使用类似的方式获取所有图像 url,然后将它们直接下载到您的服务器。 2.2. 将图像放到画布上,然后用于获取 base64 编码数据,然后您可以在后端传递和处理这些数据。此处和此处的更多信息是关于在磁盘上保存 base64 数据 PS从 puppeteer 返回到后端时请记住您的数据,因为 puppeteer 无法处理数据。fetch

return JSON.stringify(Array.from(document.querySelectorAll('img'), i => i.src))
toDataUrl()


JSON.stringify()


推荐阅读