总有些人,想下载一个插件,能直接获取浏览器显示页面的全部资源。也就是下载一个其余人的网站,可是不想一个个复制连接的内容,缘由大体有二: 一、连接多,打卡每一个连接去下载十分繁琐 二、复制好了,还要从新改html中每一个连接指向的新资源路径(下载好的路径)css
一、js在浏览器上是不可能实现,本地生成文件的(下载资源),由于浏览器没有这个权限,那么就须要服务器配合 二、服务器如何知道html浏览器中,到底有哪些文件须要下载,服务器自己没有document对象,那么就返回来须要浏览器配合html
靠浏览器获取全部须要下载的资源,把须要下载的资源经过ajax请求方式,告诉服务器,服务器去实现下载资源node
root根目录
| static文件夹
| file 文件夹(这个能够不建立,下载资源会生成这个文件夹)
| jquery-1.8.3.js
| app.js
复制代码
一、app.js(先执行这个js,cmd命令窗口输入: node app.js)jquery
var express = require('express');
var fs = require('fs');
var bodyParser = require('body-parser');
var request = require('request ');
var path= require('path');
var app = express();
app.use(bodyParser.json());
app.use('/urlDownLoadFile', (req, res) => {
var filePaths = req.body.filepaths,
dirPath = req.body.dirPath;
var fileDirPath = path.join(__dirname, './static/', dirPath);
if (!fs.existsSync(fileDirPath)) {
fs.mkdirSync(fileDirPath);
}
filePaths.forEach(item => {
if (item !== '') {
var lastIndex = item.lastIndexOf('/'),
fileName = item.substr(lastIndex + 1);
var stream = fs.createWriteStream(path.join(fileDirPath, fileName));
request(item).pipe(stream).on('close', (err) => {
if (err) {
console.log(err);
}
});
}
});
res.send('');
});
app.use('/', express.static('./static'));
app.listen(3000);
复制代码
二、而后,F12打开要下载网页的控制台,把下面这段代码复制进去ajax
var dirPath = 'file/', // 资源目录(下载到服务器 static/里面的 哪一个文件夹)
allUrls = [localhost.href]; // 全部要下载的路径
var scriptNode = document.createElement('script');
scriptNode.src = 'http://127.0.0.1:3000/jquery-1.8.3.js';
document.body.appendChild(scriptNode);
scriptNode.onload = () => {
$('link').each((index, ele) => {
allUrls.push(ele.href);
});
$('script').each((index, ele) => {
allUrls.push(ele.src);
});
$('img').each((index, ele) => {
allUrls.push(ele.src);
});
$.ajax({
url: 'http://127.0.0.1:3000/urlDownLoadFile',
dataType: 'jsonP',
data: {
filepaths: allUrls,
dirPath: dirPath
}
});
}
复制代码
三、打开“file 文件夹”,里面已经有了全部网页的资源:html、js、css、jpg...express
root根目录
| static文件夹
| file 文件夹(这个能够不建立,下载资源会生成这个文件夹)
| jquery-1.8.3.js
| app.js
复制代码
四、打开html修改引用资源路径json
<script src="../jquery-1.8.3.js"></script>
<script>
$('link').each((index, ele) => {
var filePath = ele.href,
lastIndex = filePath.lastIndexOf('/'),
fileName = filePath.substr(lastIndex + 1);
ele.href = fileName;
});
$('script').each((index, ele) => {
var filePath = ele.src,
lastIndex = filePath.lastIndexOf('/'),
fileName = filePath.substr(lastIndex + 1);
ele.src= fileName;
});
$('img').each((index, ele) => {
var filePath = ele.src,
lastIndex = filePath.lastIndexOf('/'),
fileName = filePath.substr(lastIndex + 1);
ele.src= fileName;
});
</script>
复制代码