【问题标题】:How to change the name of a file before it downloads in Puppeteer?如何在 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,而不是为循环中的每次点击设置一次。

标签: javascript node.js web-scraping automation puppeteer


【解决方案1】:

如果可以获取CSV文件的URL,可以插入(或修改)&lt;a&gt;标签的download属性。

否则,您可能会拦截服务器的 HTTP 响应并修改 Content-Disposition 响应标头以设置文件名,以便浏览器接收具有显式文件名的更改后的 HTTP 响应。

【讨论】:

  • 那行得通。谢谢你
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多