需求:
用nodejs编写代码实现下载某个网站单页面的所有图片
开发思路:
- 使用HTTP模块发起请求,获取到响应的数据
- 分析html数据,提取所有的图片地址
- 根据图片地址再次发起请求,获取图片文件保存到硬盘中
const https = require('https');
const fs = require('fs');
const path = require('path');
const xxx = '需要扒的资源路径';
// 使用HTTP模块发起请求,获取到响应的数据
https.get('xxx', (res) => {
// 定义变量接收数据
const content = '';
//防止中文乱码
res.setEncoding('utf-8');
// 通过响应对象,得到HTML数据
res.on('data', (str) => {
content += str;
})
// 数据接收完毕
res.on('end', () => {
// 分析content数据,提取所有的图片地址
// 正则匹配图片
const reg = /src="(.*?\.jpg)"/img;
const filename;
// 遍历
while(filename = reg.exec(content)){
// 下载图片函数
getImage(filename[1]);
}
})
});
function getImage(url){
// 图片在保存时,需要文件名,先获取文件名
const obj = path.parse(url);
const fn = obj.base;
const streamImg = fs.createWriteStream('./img/'+ fn);
// 兼容网站没有根目录的情况
if(obj.root.length === 0){
url = '/'+url;
}
// 拼接成一个完整的图片url
url = 'xxx'+url;
// 向服务器发送请求,获取图片
https.get(url,(res) => {
res.pipe(streamImg);
})
}
网友评论