技术准备
NodeJS 中的 http模块、fs模块
正则表达式
开发思路
1. 打开网页查看内容,找图片地址
找规律 => 查看网页源代码
小图:
大图:
2. 编写代码实现打开网页,获取所有的html内容
3. 通过正则表达式提取出有哪些图片地址
var reg=/<img src=".+?" data-src="(.+?)" alt=".*?" \/>/img;
while(result=reg.exec(data)){
arr.push(getImgUrl(result[1]));
}
4. 遍历图片地址数组,一个一个请求
5. 将获取到的图片数据保存在硬盘上
示例代码
var http = require('http');
var fs = require('fs');
http.get('<url>', res => {
var data = '';
res.on('data', a => {
data += a.toString();
});
res.on('end', () => {
var reg = /<img src=".+?" data-src="(.+?)" alt=".*?" \/>/img;
var result;
var arr = [];
while (result = reg.exec(data)) {
arr.push(getImgUrl(result[1]));
}
for (let i in arr) {
setTimeout(() => {
saveImg(arr[i])
}, 500 * i)
}
});
});
function getImgUrl(url) {
return url.replace('/pic/', '/file/').replace('4.jpg', '2.jpg');
}
function saveImg(url) {
http.get(url, res => {
var fn = new Date().getTime();
var stream = fs.createWriteStream('./files/' + fn + '.jpg');
res.pipe(stream);
});
}