const request = require('request'); const iconv = require('iconv-lite'); const cheerio = require('cheerio'); const fs = require('fs'); // var Iconv = require('iconv').Iconv; var baseUrl = 'https://pic.netbian.com'; // 1034 页,主要存放 页面地址的 var pageArr = []; var pageIndex = 0 var hrefArr = []; var hrefIndex = 0; for (var i = 1; i <= 100; i++) { if (i == 1) { pageArr.push(baseUrl) } else { pageArr.push(`${baseUrl}/index_${i}.html`) } } console.log("pageArr: ", pageArr); function requestPage() { getHtml(pageArr[pageIndex], ($) => { $(".slist li").each(function (index, ele) { if (!$(this).hasClass("nextpage")) { hrefArr.push( `${baseUrl}${$(this).find("a").attr("href")}` ) } }) requestInfo() console.log("hrefArr: ", hrefArr); }) } function requestInfo() { getHtml(hrefArr[hrefIndex], ($) => { request(`${baseUrl}${$(".photo-pic img").attr("src")}`) .pipe( fs.createWriteStream(`./img/${ Math.random() * 1000000 + `${Date.now()}` }.jpg`) ) hrefIndex += 1; if (hrefIndex < hrefArr.length) { requestInfo() } else { pageIndex += 1 if (pageIndex < pageArr.length) { requestPage() } } }) } function getHtml(url, callback) { request({ uri: url, method: 'GET', encoding: 'binary' }, function (error, response, body) { var str2 = iconv.decode(new Buffer(body, 'binary'), 'gbk'); const $ = cheerio.load(str2); callback($) }); } requestPage()