const axios = require("axios"); const iconv = require("iconv-lite"); const cheerio = require("cheerio"); const fs = require("fs"); var url = "http://www.netbian.com/dongman/"; var urlArr = []; var imgUrlArr = []; var index = 0; var urlIndex = 6; for (var i = 9; i <= 136; i++) { if (i == 1) { urlArr.push(url); } else { urlArr.push(`${url}index_${i}.htm`); } } async function getSiteHtml() { console.log(`第 ${index + 1} 页,请求地址为:`, urlArr[index]); let res = await axios({ method: "get", url: urlArr[index], responseType: "arraybuffer", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", Cookie: "__yjs_duid=1_b9d996b2175dc2d7535f6766d95151c11626417252241; Hm_lvt_14b14198b6e26157b7eba06b390ab763=1626417252; xygkqecookieinforecord=%2C7-23654%2C; xygkqecookieclassrecord=%2C7%2C4%2C3%2C29%2C19%2C; yjs_js_security_passport=fd52428938eab0e648019f36164ac5c0fcfcf108_1626421470_js; Hm_lpvt_14b14198b6e26157b7eba06b390ab763=1626421860", Host: "www.netbian.com", Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", }, }); let $ = cheerio.load(iconv.decode(res.data, "gbk")); jxHtml($); } async function jxHtml($) { $(".list li img").each(function (i) { var src = $(this).attr("src"); if (src.includes("small")) { src = src.replace("small", ""); src = src.replace(src.substr(-14), ".jpg"); imgUrlArr.push(src); } if (src.includes("newc")) { console.log("==========================="); console.log(`1: 系统检测到不符合规律的图片,请手动处理`); console.log(`访问路径:${urlArr[index]}, 第: ${i} 张图`); console.log("==========================="); } }); downImage(); } async function downImage() { console.log("imgUrlArr[urlIndex] ====== ", imgUrlArr[urlIndex]); try { var jpgFileName = Date.now() + Math.random() + ".jpg"; var res = await axios({ method: "get", url: imgUrlArr[urlIndex], responseType: "stream", }); res.data.pipe(fs.createWriteStream(`img/${jpgFileName}`)); console.log( `当前第:${index + 1} 页,第:${urlIndex + 1} 张图:${imgUrlArr[urlIndex]}` ); if (urlIndex <= imgUrlArr.length - 2) { setTimeout(() => { urlIndex += 1; downImage(); }, 1000); } else { console.log("上一页结束"); urlIndex = 0; imgUrlArr = []; setTimeout(() => { index += 1; getSiteHtml(); }, 2000); } } catch (error) { console.log("==========================="); console.log(`2: 系统检测到不符合规律的图片,请手动处理`); console.log(`访问路径:${urlArr[index]}, 第: ${urlIndex} 张图`); console.log("==========================="); setTimeout(() => { urlIndex += 1; downImage(); }, 1000); } } getSiteHtml();