首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用pupeteer指定下载目录?

Puppeteer 是一个 Node.js 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。默认情况下,Puppeteer 下载的文件会保存在系统的默认下载目录。如果你想指定下载目录,可以通过设置 page._client.send 方法来修改浏览器的下载行为。

以下是如何使用 Puppeteer 指定下载目录的步骤:

  1. 安装 Puppeteer(如果你还没有安装):
代码语言:txt
复制
npm install puppeteer
  1. 设置下载目录: 在启动浏览器时,你需要设置 downloadsPath 并禁用下载提示。
代码语言:txt
复制
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 数组包含了一些常用的浏览器启动参数,你可以根据需要进行调整。

注意:在生产环境中使用时,确保下载目录是安全的,并且应用程序有权限写入该目录。

参考链接:

  • Puppeteer 官方文档: https://pptr.dev/
  • DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券