📅  最后修改于: 2023-12-03 15:03:53.399000             🧑  作者: Mango
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 设置下载路径,我们可以灵活地控制文件的下载位置,方便处理大规模数据、自动化测试等场景。上面的代码示例可以作为一个通用模板,稍加修改即可应用到具体的项目中。