返回

用 Puppeteer 控制 Chrome/Chromium 实现文件下载

前端

在前面的 5 篇文章中,我们已经了解了 Puppeteer 的基本用法,包括如何打开浏览器、导航到指定页面、选择元素和点击元素等。在本文中,我们将讲解如何使用 Puppeteer 控制 Chrome/Chromium,从而达到下载文件的目的。

设置下载目录

Puppeteer 提供了 downloadPath 选项来设置下载目录。该选项可以在 launch() 方法中指定,如下所示:

const browser = await puppeteer.launch({
  downloadPath: '/path/to/download/directory',
});

这样,所有下载的文件都会被保存到 /path/to/download/directory 目录中。

暂停或恢复下载

Puppeteer 还提供了 setDownloadBehavior() 方法来暂停或恢复下载。该方法有两种参数,分别是 behaviorpathbehavior 参数可以是 'allow''deny''defer',分别表示允许下载、禁止下载和延迟下载。path 参数是下载文件的路径。

以下示例演示了如何暂停下载:

await page.setDownloadBehavior('defer');

以下示例演示了如何恢复下载:

await page.setDownloadBehavior('allow');

在下载完成后进行处理

Puppeteer 还提供了 on() 方法来监听下载事件。该方法有两个参数,分别是 eventcallbackevent 参数可以是 'download''pageerror',分别表示下载事件和页面错误事件。callback 参数是一个函数,将在事件发生时被调用。

以下示例演示了如何在下载完成后进行处理:

page.on('download', async (download) => {
  // 下载完成时触发此回调函数
  console.log(`下载文件: ${download.url()}`);
  await download.saveAs('/path/to/save/file');
});

结语

Puppeteer 是一个强大的工具,可以用于各种自动化任务。本文介绍了如何使用 Puppeteer 控制 Chrome/Chromium,从而达到下载文件的目的。希望本文对您有所帮助。