puppeteer 下载文件
时间: 2023-09-25 21:17:32 浏览: 56
在 Puppeteer 中,你可以使用 `page._client.send()` 函数来模拟鼠标点击下载链接,并将文件保存到指定的目录。下面是一个示例代码片段,演示了如何使用 Puppeteer 下载文件:
```javascript
const puppeteer = require('puppeteer');
const fs = require('fs');
async function downloadFile() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 跳转到包含下载链接的页面
await page.goto('https://example.com');
// 点击下载链接
await page.evaluate(() => {
// 替换这里的选择器为下载链接的实际选择器
const downloadLink = document.querySelector('#download-link');
downloadLink.click();
});
// 等待一段时间,确保文件下载完成
await page.waitForTimeout(5000);
// 获取文件名
const fileName = await page.evaluate(() => {
// 替换这里的选择器为下载文件的实际选择器
const fileElement = document.querySelector('#file-element');
return fileElement.getAttribute('href').split('/').pop();
});
// 移动文件到指定目录
const downloadPath = '/path/to/save/file/';
fs.renameSync('./Downloads/' + fileName, downloadPath + fileName);
await browser.close();
}
downloadFile();
```
上述代码中,你需要替换示例中的选择器和文件路径为实际的值。其中,`#download-link` 是下载链接的选择器,`#file-element` 是包含文件信息的元素选择器,`/path/to/save/file/` 是你希望保存文件的目录路径。
注意:在 Puppeteer 默认的配置中,下载的文件会保存在项目根目录下的 `Downloads` 文件夹中。如果你希望更改下载文件的保存路径,可以修改 `userDataDir`、`defaultViewport` 和 `executablePath` 等参数。