写代码,实用nightmare模块,下载文件到指定目录
时间: 2023-11-10 09:06:18 浏览: 40
好的,首先需要确保已经安装了Node.js和nightmare模块。然后就可以按照以下步骤编写代码了:
1. 引入所需模块
```javascript
const nightmare = require('nightmare');
const fs = require('fs');
const path = require('path');
```
2. 设置下载文件的相关配置
```javascript
const downloadPath = path.join(__dirname, 'downloads'); // 下载文件的存储路径
if (!fs.existsSync(downloadPath)) { // 如果该路径不存在,则创建一个新的文件夹
fs.mkdirSync(downloadPath);
}
const options = {
show: true, // 是否显示浏览器窗口
waitTimeout: 2000, // 等待超时时间(毫秒)
download: {
directory: downloadPath,
saveAs: true // 是否在下载时弹出“另存为”对话框
}
};
```
3. 创建一个nightmare实例,打开需要下载文件的页面
```javascript
const url = 'https://www.example.com/download/file.zip';
const nightmareInstance = nightmare(options);
await nightmareInstance.goto(url);
```
4. 等待一段时间,确保文件已经加载完毕
```javascript
await nightmareInstance.wait('#download-button');
```
5. 点击下载按钮
```javascript
await nightmareInstance.click('#download-button');
```
6. 等待一段时间,确保文件已经下载完成
```javascript
await nightmareInstance.waitDownloadsComplete(); // 等待所有下载任务完成
```
7. 关闭浏览器窗口
```javascript
await nightmareInstance.end();
```
完整代码如下:
```javascript
const nightmare = require('nightmare');
const fs = require('fs');
const path = require('path');
const downloadPath = path.join(__dirname, 'downloads');
if (!fs.existsSync(downloadPath)) {
fs.mkdirSync(downloadPath);
}
const options = {
show: true,
waitTimeout: 2000,
download: {
directory: downloadPath,
saveAs: true
}
};
(async function() {
const url = 'https://www.example.com/download/file.zip';
const nightmareInstance = nightmare(options);
await nightmareInstance.goto(url);
await nightmareInstance.wait('#download-button');
await nightmareInstance.click('#download-button');
await nightmareInstance.waitDownloadsComplete();
await nightmareInstance.end();
})();
```