Files
ClassContent/历届学生/font-end-nine/项目练习/学生项目/冯文焌/7node/爬虫/index.js
2024-09-27 02:06:13 +08:00

85 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const request = require('request');
const iconv = require('iconv-lite');
var Iconv = require('cheerio');
const fs = require('fs');
var baseUrl = 'https://pic.netbian.com';
//1034页数,主要存放页面地址的
var pageArr = [];
var pageIndex = 0
var hrefArr = [];
var hrefIndex = 0;
for (var i = 1; i < 3; 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()