使用 puppeteer 如何监听到下载文件完成?

2023-10-24 00:27:06 +08:00
 xlinux

如题,使用 puppeteer 如何监听到下载文件完成?下载的动作是通过自动点击 a 链接下载的,

await element.click();

怎么样才能监听到文件下载完成了呢?之前试过用 download.js ,直接使用 nodejs 下载,但是无法下载。 想实现的功能就是自动地下载蓝奏的资源,然后把下载的资源自动上传到百度网盘。

974 次点击
所在节点    程序员
2 条回复
krapnik
2023-10-24 01:19:49 +08:00
创建 CDPSession 下载文件,监听对应的下载事件:
```
const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();

// 创建 CDPSession
const session = await page.target().createCDPSession();

// 监听文件下载完成事件
session.on('Page.downloadWillBegin', async (params) => {
const { downloadId, url } = params;
console.log(`开始下载文件:${url}`);

// 等待下载完成
await session.send('Page.setDownloadBehavior', {
behavior: 'allow',
downloadId,
downloadPath: '/path/to/save/file', // 指定文件保存路径
});

console.log(`文件下载完成:${url}`);
});

await page.goto('https://example.com'); // 打开页面进行操作

await browser.close();
})();
```
oyasumi
2023-10-24 07:49:58 +08:00
看下载的时候是不是有个后缀为 crd 的文件,隔几秒判断下中间文件存不存在。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/984704

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX