如何在 Puppeteer 中下载文件之前更改文件名?
Posted
技术标签:
【中文标题】如何在 Puppeteer 中下载文件之前更改文件名?【英文标题】:How to change the name of a file before it downloads in Puppeteer? 【发布时间】:2022-01-06 06:54:37 【问题描述】:我需要从一个网站下载几个 .csv 文件并用不同的名称保存它们。但是,它们都以相同的名称下载。因此,他们不断覆盖最后一个文件,最后只剩下一个文件。这是我的代码:
for(let i = 0; i <= 10; i++)
await page._client.send("Page.setDownloadBehavior",
behavior: "allow",
downloadPath: `./csvFiles/`,
);
await page.click("button_selector");
Puppeteer 点击下载按钮后开始下载,由于所有这些代码都在循环中,我无法重命名文件,因为它们仅在循环结束后创建,此时我只下载了一个文件.
【问题讨论】:
请问这是哪一页?如果无法运行代码来查看问题并尝试解决问题,就很难回答。谢谢。顺便说一句,您可能只需要在创建页面时设置一次Page.setDownloadBehavior
,而不是为循环中的每次点击设置一次。
【参考方案1】:
如果可以获取CSV文件的URL,可以插入(或修改)<a>
标签的download
属性。
否则,您可能会拦截服务器的 HTTP 响应并修改 Content-Disposition
响应标头以设置文件名,以便浏览器接收具有显式文件名的更改后的 HTTP 响应。
【讨论】:
那行得通。谢谢你以上是关于如何在 Puppeteer 中下载文件之前更改文件名?的主要内容,如果未能解决你的问题,请参考以下文章