如题,使用 puppeteer 如何监听到下载文件完成?下载的动作是通过自动点击 a 链接下载的,
await element.click();
怎么样才能监听到文件下载完成了呢?之前试过用 download.js ,直接使用 nodejs 下载,但是无法下载。 想实现的功能就是自动地下载蓝奏的资源,然后把下载的资源自动上传到百度网盘。
1
krapnik 2023-10-24 01:19:49 +08:00 1
创建 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(); })(); ``` |
2
oyasumi 2023-10-24 07:49:58 +08:00 via Android 1
看下载的时候是不是有个后缀为 crd 的文件,隔几秒判断下中间文件存不存在。
|