Files
2024-09-27 02:06:13 +08:00

98 lines
2.5 KiB
JavaScript

const axios = require('axios');
const cheerio = require('cheerio');
const url = require("url");
const fs = require("fs");
// 存放每个页面的
var urlArr = [];
// 存放详情地址的
var infoArr = [];
// 详情页需要被下载的图片数据
var infoImgArr = []
var infoImgIndex = 0;
var infoIndex = 0;
var pageIndex = 0;
for (var i = 1; i <= 12; i++) {
urlArr.push(`https://www.mmav.me/forum-12-${i}.htm`);
}
getHTML()
/**
* 用来爬每一页的 假设 1 ~ 100
*/
async function getHTML() {
console.log(`1: getHTML 的 pageIndex 为:${pageIndex}`);
var result = await axios.get(urlArr[pageIndex]);
const $ = cheerio.load(result.data);
$(".cont .list_info a").each(function () {
infoArr.push("https://www.mmav.me/" + $(this).attr("href"))
});
getInfo()
}
async function getInfo() {
console.log(`2: getInfo 的 infoIndex 为:${infoIndex}`);
var result = await axios.get(infoArr[infoIndex]);
const $ = cheerio.load(result.data);
$(".imglist li a img").each(function () {
var bigImg = $(this).attr("data-original")
bigImg = bigImg.replace(/_t\./g, ".")
infoImgArr.push("https://www.mmav.me" + bigImg)
});
downImg()
}
async function downImg() {
console.log(`3: downImg 的 infoImgIndex 为:${infoImgIndex},被下载的图片地址为:${infoImgArr[infoImgIndex]}`);
axios({
method: 'get',
url: infoImgArr[infoImgIndex],
responseType: 'stream'
}).then(function (response) {
response.data.pipe(fs.createWriteStream(`img/${imgName(infoImgArr[infoImgIndex])}`));
infoImgIndex += 1
if (infoImgIndex < infoImgArr.length) {
downImg()
}
else {
infoImgIndex = 0;
infoImgArr = [];
infoIndex += 1
if (infoIndex < infoArr.length) {
getInfo()
}
else {
infoIndex = 0
infoArr = []
pageIndex += 1
if (pageIndex < urlArr.length) {
getHTML()
} else {
console.log("所有页数下载完成");
}
}
}
});
}
function imgName(urlPath) {
return url.parse(urlPath).path.split("/pic/")[1].split("/")[1]
}
// https://www.mmav.me/uploadfile/pic/20210430/467_12_t8JXXgLYcEgtD5IM3kOw.jpg
// https://www.mmav.me/uploadfile/pic/20210430/467_12_t8JXXgLYcEgtD5IM3kOw.jpg
// https://www.mmav.me/uploadfile/pic/20210430/467_12.JXXgLYcEgtD5IM3kOw.jpg