1,引入所需依赖

const  https = require('https');
const fs = require('fs');
const cheerio = require('cheerio');

2,业务代码展示

https.get('网址',function(res) {
    // 分段返回, 自己拼接
    let html = '';
    // 有数据产生的时候 拼接
    res.on('data',function(chunk) {
        html += chunk;
    })
    res.on('end',function() {
        const $ = cheerio.load(html);
        let allFilms = [];
        $('li .item').each(function() {
            //  this 循环时 指向当前这个电影
            //  当前这个电影下面的title
            const title = $('.title',this).text();
            const star = $('.rating_num',this).text();
            const pic = $('.pic img',this).attr('src');
            allFilms.push({
                title,star,pic
            })
        })
        // 把数组写入json里面
        fs.writeFile('./films.json',JSON.stringify(allFilms),function(err){
            if(!err) {
                console.log('文件写入完毕');
            }
        })
        // 下载图片
        downloadImage(allFilms);
    })
})
 
function downloadImage(allFilms) {
    for(let i=0; i<allFilms.length; i++) {
        const picUrl = allFilms[i].pic;
        console.log('获取图片',picUrl);
        // 请求 -》 拿到数据
        // fs.writeFile('./xx.png','内容')
        https.get(picUrl,function(res) {
            res.setEncoding('binary');
            let str = '';
            res.on('data',function(chunk) {
                str += chunk;
            })
            res.on('end',function() {
                fs.writeFile(`./images/${i}.png`,  str, 'binary' ,function(err) {
                    if(!err) {
                        console.log(`第${i}张图片下载成功`);
                    }
                })
            })
        })
    }
}