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}张图片下载成功`);
}
})
})
})
}
}