puppeteer - 如何设置下载位置

时间:2017-10-27 01:51:23

标签: node.js chromium puppeteer

我能够用puppeteer成功下载文件,但它只是保存到我的/ Downloads文件夹中。我一直在四处寻找,无法在api或论坛中找到任何设置此位置的内容。

我的下载基本上只是转到链接:

await page.goto(url);

2 个答案:

答案 0 :(得分:11)

这是您在最新的puppeteer v0.13中设置下载路径的方法。

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

该行为属于实验性行为,可能会在以后删除,修改或更改。

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

答案 1 :(得分:0)

我意识到这是一个旧线程,但是在寻找如何设置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每次运行时都会创建一个自定义配置文件,我们可以覆盖该配置文件并定义下载目录。

第一次运行上述代码时,如果第一次启动Chrome时不存在,则必须将fs.readFile注释为fs.writeFile,因为UserDirDirectory已创建。

所有与配置文件相关的数据随后都存储在customChrome / Default文件夹中。 How to pass userDataDir profile folder to Puppeteer