有时候想收集一些网站的图片,如果网页图片太多,一个个点击保存太耗费时间,
下面是一个基础版的获取图片网页的方法。
注意:只能获取固定写在html页面上的图片,不支持获取数据渲染的图片。
const http = require('http'); // 看网站区别是 http 还是 https
const cheerio = require('cheerio'); //类似jquery的工具
const HOST = 'https://www.xxx.com/';
const download = require('download'); //文件下载插件
const targetUrl = HOST + 'xx.html'; //页面地址
let req = http.request(targetUrl ,res=>{
let chunks = [];
res.on('data',c=>chunks.push(c));
res.on('end',()=>{
let htmlStr = Buffer.concat(chunks).toString('utf-8');
const $ = cheerio.load(htmlStr);
const target = 'img'; // 这是网页下的全部img 标签,如果需要特定排列的img,可以通过开发者工具查看dom的方法,获取特定的img; 比如 '.list .li>.img'
const imgs = Array.prototype.map.call($(target),c=>HOST + encodeURI($(c).attr('src')))
Promise.all(imgs.map(x=>download(x,'images'))).then(()=>{ //下载的图片放到images文件夹
console.log('files downloaded') //完成之后调用
})
})
});
req.end()