98 lines
2.5 KiB
JavaScript
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
|