puppeteer - 如何设置下载位置

puppeteer - how to set download location

我能够使用 puppeteer 成功下载文件,但它只是将其保存到我的 /Downloads 文件夹中。我环顾四周,在 api 或论坛中找不到任何设置此位置的内容。

我的下载基本都是去link:

await page.goto(url);

在最新的 puppeteer v0.13 中,您可以这样设置下载路径。

await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './myAwesomeDownloadFolder'});

该行为是实验性的,以后可能会被删除、修改或更改。

Pst,您可以尝试列出的更多技巧 here,风险自负:)。

我知道这是一个旧线程,但是当我寻找如何设置 Puppeteer 默认下载位置时,这个线程首先为我弹出。 我能够使用以下代码设置下载位置,

let customChrome = path.resolve(__dirname, './customChrome')
        let prefs = fs.readFileSync(customChrome+'/Default/Preferences');
        let obj = JSON.parse(prefs);
        obj.savefile.default_directory = path.resolve(__dirname, './downloads');
        obj.download.default_directory = path.resolve(__dirname, './downloads');
        fs.writeFileSync(customChrome+'/Default/Preferences', JSON.stringify(obj));
        const browser = await puppeteer.launch({
            userDataDir:customChrome,
            headless: false,                                                                                                                                                                                                                                                 
            args:['--disable-features=site-per-process','--no-sandbox']
        });

这将在进程开始前设置文件的默认下载目录。本质上,Puppeteer 每次 运行 都会创建一个自定义配置文件,我们可以覆盖该配置文件并定义下载目录。

第一次运行上面的代码,你必须注释掉fs.readFile到fs.writeFile,因为如果第一次创建UserDirDirectory不存在Chrome 已启动。

然后所有配置文件相关数据都存储在 customChrome/Default 文件夹中。