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,101 @@
const request = require('request');
const iconv = require('iconv-lite');
const cheerio = require('cheerio');
const fs = require('fs');
//网页基地址
var baseUrl = `https://pic.netbian.com`
//网页地址共1034页
//用于存放页面地址(一页一页的下载)
var pageArr = []
var pageIndex = 0
//用于存放详情页地址
var hrefArr = []
var hrefIndex = 0
//循环先爬3页
for (var i = 1; i <= 2; i++) {
if (i == 1) {
pageArr.push(`${baseUrl}/index.html`)
} else {
pageArr.push(`${baseUrl}/index_${i}.html`)
}
}
// console.log("pageArr:", pageArr);
function requestPage() {
//调用getHtml方法请求
getHtml(pageArr[pageIndex], ($) => {
//each遍历(下标,元素)
$(".slist li").each(function (index, element) {
//去除下一页图片(21下一页)总共20张图片
if (!$(this).hasClass("nextpage")) {
// console.log( $(this).find("a").attr("title"));
hrefArr.push(
//attr打印标签属性
//基地址 + 图片地址
`${baseUrl}${$(this).find("a").attr("href")}`
)
}
})
requestInfo()
// console.log("hrefArr:",hrefArr);
})
}
function requestInfo() {
getHtml(hrefArr[hrefIndex], ($) => {
//A 利用request去请求图片地址
request(`${baseUrl}${$(".photo-pic img").attr("src")}`)
//管道符: 将A的数据流入B
.pipe(
//B fs创建写入数据流 //图片命名方式,随机数+时间戳避免名字重复
fs.createWriteStream(`./img/${ Math.random() * 1000000 + `${Date.now()}` }.jpg`)
)
// console.log(`${baseUrl}${$(".photo-pic img").attr("src")}`);
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($)
// console.log(str2);
});
}
requestPage()