node.js - Puppeteer,与 node.js 交换缓冲区
问题描述
puppeteer 内部运行的页面下载图像。打电话时page.evaluate
,必须先将某些图像写入磁盘,然后再对其进行其他操作。
最好的方法是什么?能够从在 puppeteer 中运行的浏览器中编写这些图像吗?将缓冲区从 puppeteer 发送到 node.js?
注意:其中一些图像可能是结果画布操作,因此它们不是请求的结果。
解决方案
有几种可能的解决方案:
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()
推荐阅读
- ibm-cloud - 无法在管道作业中部署附加包
- reactjs - 在 react useEffect 方法问题中加载 mxgraph
- ruby - JavaScript `reduce` 到 Ruby `reduce`
- symfony - Symfony 表单主题块覆盖中不存在变量
- python - 在 Python 中,什么是 UIF_CMD 以及它是如何工作的?
- php - 通过 REST API v1 和 PHP 创建 Google 文档
- php - 如何检查产品是否已经在购物车中?
- azure - 应用程序网关后端池中的 Azure 内部负载均衡器
- rename - 设置新的数据框标签
- azure - Azure DevOps 发布管道 Azure CLI Powershell 任务找不到 powershell