81 lines
1.7 KiB
JavaScript
81 lines
1.7 KiB
JavaScript
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() |