http、https、fs、cheerio模块。当然cheerio需要安装后引入。
当然,关于cheerio 更多的内容,你可以看npmjs官方文档
// 安装cheerio npm install cheerio
我们需要创建一个server.js文件。本次我们爬取豆瓣电影网站中上海正在热映的电影海报。
const http = require("http")
const https = require("https")
const fs = require("fs")
const cheerio = require("cheerio")
// 爬取网站地址 豆瓣电影上海正在热映的电影海报
const urlString = "https://movie.douban.com/cinema/nowplaying/%E4%B8%8A%E6%B5%B7/"
// 创建服务
const server = http.createServer((res,req) => {
let data = ''
https.get(urlString,(result) => {
result.on('data',(chunk) => {
data += chunk
})
result.on('end',() => {
fs.writeFileSync('./new.html', data); // 你的根目录下就会有一个new的静态网页代码(便于查看,没有都可以)
console.log('传输完成');
filterData(data) //调用过滤文件方法
})
})
})
// 用cheerio过滤数据
function filterData(data) {
const $ = cheerio.load(data);
let imgArr = [] //用于存取过滤后的数据容器
$('.lists>li').each((index,el) => {
imgArr.push($(el).find(".poster img").attr("src"))
})
console.log(imgArr)
imgArr.forEach((item,index) => {
loadImg (item) //下载图片
})
}
// 封装下载图片到本地
function loadImg (url) {
https.get(url, (res) => {
res.setEncoding("binary"); // 设置response的编码为binary(二进制)否则会下载下来的图片打不开
var imgData = '';
res.on('data', (chunk) => {
imgData += chunk;
})
res.on('end', () => {
// 将爬到的图片下载到本地,下载前要确认根目录下有images文件夹,否则会fail
fs.writeFile('./images/' + Math.floor(Math.random() * 100000) +'.png', imgData, "binary", (error) => {
if(error){
console.log("down fail");
} else {
console.log("down success");
}
});
})
})
}
// 开启监听服务
server.listen('8888',()=>{
console.log('localhost:8888')
})
创建好服务,定义好过滤方法filterData以及下载图片的方法loadImg后。通过命令启动服务。然后在浏览器中输入网址localhost://8888,就会发现神奇的一幕出现了:几十张图片秒下载。

同理,下载视频等文件都是OK的。
This is an eye-opening article. We need more coverage like this
thanks