Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。默认情况下,Puppeteer 下载的文件会保存在系统的默认下载目录。如果你想指定下载目录,可以通过设置 page._client.send
方法来修改浏览器的下载行为。
以下是如何使用 Puppeteer 指定下载目录的步骤:
npm install puppeteer
downloadsPath
并禁用下载提示。const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false, // 设置为 true 如果你想在无头模式下运行
args: [
`--disable-infobars`,
`--window-position=0,0`,
`--ignore-certifcate-errors`,
`--allow-running-insecure-content`,
`--disable-web-security`,
`--use-fake-ui-for-media-stream`,
`--disable-setuid-sandbox`,
`--disable-dev-shm-usage`,
`--disable-gpu`,
`--disable-software-rasterizer`,
`--disable-dev-shm-usage`,
`--no-first-run`,
`--no-sandbox`,
`--no-zygote`,
`--single-process`,
`--disable-background-timer-throttling`,
`--disable-backgrounding-occluded-windows`,
`--disable-breakpad`,
`--disable-client-side-phishing-detection`,
`--disable-component-update`,
`--disable-domain-reliability`,
`--disable-features=EnableAdClickAttribution`,
`--disable-hang-monitor`,
`--disable-ipc-flooding-protection`,
`--disable-renderer-backgrounding`,
`--disable-sync`,
`--disable-translate`,
`--metrics-recording-only`,
`--mute-audio`,
`--no-default-browser-check`,
`--no-experiments`,
`--no-first-run`,
`--no-pings`,
`--no-sandbox`,
`--no-zygote`,
`--password-store=basic`,
`--use-mock-keychain`,
`--use-password-manager`,
`--disable-blink-features=AutomationControlled`
]
});
const page = await browser.newPage();
// 设置下载目录
await page._client.send('Page.setDownloadBehavior', {
behavior: 'allow',
downloadPath: '/path/to/download' // 替换为你想要的下载目录路径
});
// 导航到包含下载链接的页面
await page.goto('http://example.com');
// 点击下载链接
await page.click('#download-link');
// 等待下载完成(这只是一个简单的例子,实际情况可能需要更复杂的逻辑来确定下载何时完成)
await page.waitForTimeout(5000);
await browser.close();
})();
请确保替换 /path/to/download
为你希望保存下载文件的绝对路径。此外,上述代码中的 args
数组包含了一些常用的浏览器启动参数,你可以根据需要进行调整。
注意:在生产环境中使用时,确保下载目录是安全的,并且应用程序有权限写入该目录。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云