nodejs的小应用-批量顺序保存微信文章图片
本帖最后由 笨笨家的唯一 于 2021-11-25 14:49 编辑有些时候在微信中找到了一些图片资源,想都按顺序保存下来,但是吧,又懒得一个个的保存或者提取缓存,就搞了一个这个,保存的时候是按照图片出现的顺序来命名保存的,应该也算是一个爬虫吧{:301_1008:}
主要添加了 async包,用来控制并发数。默认保存在当前目录下的 weixinimg 文件夹中const cheerio = require("cheerio");
const axios = require("axios");
const fs = require("fs");
const async = require("async");
const path = require("path");
const downloadImg = (url, paths) => {
return new Promise((resolve, reject) => {
let config = {
headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36",
},
responseType: "stream",
};
let res = axios.get(url, config);
res.then(respone => {
let fsw = fs.createWriteStream(paths);
respone.data.pipe(fsw);
fsw.on("close", () => {
resolve(`${path.basename(paths)}保存完毕!`);
});
});
res.catch(err => {
console.log("no such file!");
reject(0);
});
});
};
const baseurl = "https://mp.weixin.qq.com/s/8gkCrpbP3pitfQN2L9FTBA";//*****这里改成自己需要的内容*****
let result = {
pathNames: [],
urls: [],
};
axios
.get(baseurl, {
headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36",
},
})
.then(res => {
let $ = cheerio.load(res.data);
$("img.rich_pages").each((i, value) => {
result.pathNames.push("./weixinimg/" + i + "." + $(value).attr("data-type"));
result.urls.push($(value).attr("data-src"));
});
async.mapLimit(result.urls, 20, imgFun, allImgFun);
});
function imgFun(url, callback) {
let index = result.urls.indexOf(url);
downloadImg(url, result.pathNames)
.then(res => {
console.log(res);
callback(null, null);
})
.catch(err => {
console.log("no such file");
callback(null, null);
});
}
function allImgFun(err, resultes) {
console.log("图片保存在 weixingimg 文件夹下,请注意检查!");
}
才疏学浅,有不对的还希望大家批评指正 思路非常好。
说一点锦上添花的建议,pathName和url封装成一个object后缓存到result,然后在imgFun的回调中消费每个object,就会减少好多index的计算。
最后,建议多用用es6的语法,比如map,reduce,lambda等, unmask 发表于 2021-11-25 23:21
思路非常好。
说一点锦上添花的建议,pathName和url封装成一个object后缓存到result,然后在imgFun的回调 ...
才开始学nodejs,很多都不会{:301_1005:} 不错周末有空拿来试试 楼主,有成型的exe吗?正需要这东东,谢谢! 思路挺好的,就是看实现有很多重复代码,可以整合精简一下 2titanic 发表于 2022-3-8 08:39
楼主,有成型的exe吗?正需要这东东,谢谢!
初学者,不会打包{:301_973:} 正在学习nodejs,研究一下,感谢分享。 这个可以批量下载微信中合并转发的图片吗? liang8210 发表于 2022-9-14 17:11
这个可以批量下载微信中合并转发的图片吗?
这个下载的是微信公众号文章中的图片,你说的合并转发的是不是聊天记录图片啊?
页:
[1]