📜  puppeteer 设置下载路径 (1)

📅  最后修改于: 2023-12-03 15:03:53.399000             🧑  作者: Mango

Puppeteer 设置下载路径

Puppeteer 是 Google 推出的一个用于控制 Chrome 或 Chromium 程序的 Node.js 库,它可以模拟用户在浏览器上的操作,比如打开网页、输入数据、点击按钮等等,并可以将执行结果保存下来。

在 Puppeteer 中默认的下载路径为操作系统的默认路径,但是我们可以通过设置 downloadPath 这个选项来改变下载路径。下面是具体的介绍。

代码示例
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // 设置下载路径
  await page._client.send('Page.setDownloadBehavior', {
    behavior: 'allow',
    downloadPath: '/path/to/save/downloads'
  });

  await page.goto('https://www.google.com');
  await page.click('#some-link-to-download-file');
  
  // 等待下载完成
  await new Promise(resolve => setTimeout(resolve, 10000));

  await browser.close();
})();

上面的代码中,我们使用了 Page.setDownloadBehavior 这个方法来设置下载选项。其中 behavior 参数为 'allow' 表示允许下载,而 downloadPath 参数则表示下载路径,可以是绝对路径或相对路径。

说明

需要注意的是,Puppeteer 中的 _client 属性是一个如下所示的对象:

{
  domWorld: DomWorld,
  setViewportOverride: [Function: setViewportOverride],
  authenticate: [Function: authenticate],
  setExtraHTTPHeaders: [Function: setExtraHTTPHeaders],
  setCSPViolationReportingEnabled: [Function: setCSPViolationReportingEnabled],
  send: [Function: send],
  detach: [Function: detach],
  _dispose: [Function: _dispose]
}

其中 send 方法可以用来发送命令给浏览器,包括设置下载路径等。具体可参考官方文档(Sending commands to a target)。

结论

通过 Puppeteer 设置下载路径,我们可以灵活地控制文件的下载位置,方便处理大规模数据、自动化测试等场景。上面的代码示例可以作为一个通用模板,稍加修改即可应用到具体的项目中。