first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
////爬虫
const request = require('request');
const iconv = require('iconv');
const cheerio = require('cheerio');
const fs = require('fs');
//定义一个变量存放需要爬的网址
var baseUrl = 'https://pic.netbian.com';
//存放页面的地址 数组加下标
var pageArr =[];
var pageIndex = 0
//存放详情页的数组加下标
var hrefArr = [];
var hrefIndex = 0;
//i为页数 如果是第一页就直接向pageArr数组里面添加的首页的地址baseUrl
//否则就向pageArr数组里面添加`${baseUrl}/index_${i}.html`地址
for (var i = 1; i <= 3; i++) {
if (i == 1) {
pageArr.push(baseUrl)
} else {
pageArr.push(`${baseUrl}/index_${i}.html`)
}
}
// 调用getHtml数组加下标作为第一个参数
// 获取网页中.slist li 用each函数来遍历 each(下标,值)
// 如果不包含nextpage
// 就向hrefArr数组里面追加baseUrl(长地址)加this里面找a元素包含的href
//调用requestInfo()
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);
})
}
// 定义requestInfo() 方法调用getHtml 数组加下标作为参数
//
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()
}
}
})
}
// 封装request方法为getHtml把地址和回调函数作为参数
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($)
});
}