我能够用puppeteer成功下载文件,但它只是保存到我的/ Downloads文件夹中。我一直在四处寻找,无法在api或论坛中找到任何设置此位置的内容。
我的下载基本上只是转到链接:
await page.goto(url);
答案 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