缺点 : 也很明显 就是慢 ,细心想想如不雅要爬几万个页面 做 几万次*N 数据库的操作 这里还可以做一个缓存器一次性保存必定条数 当条数达到再做保存如许也是一个不错的选择。
- /**
- * 遍历单条书本下所有章节 调用内容抓取办法
- * @param {*} list
- */
- const mapSectionList = (list) => {
- return new Promise((resolve, reject) => {
- async.mapLimit(list, 1, (series, callback) => {
- let doc = series._doc;
- getContent(doc, callback)
- }, (err, result) => {
- if (err) {
- logger.error('书本目次抓取异步履行掉足!');
- logger.error(err);
- reject(false);
- return;
- }
- const bookName = list[0].bookName;
- const key = list[0].key;
- // 以整体为单位进行保存
- saveAllContentToDB(result, bookName, key, resolve);
- //以每篇文┞仿作为单位进行保存
- // logger.info(bookName + '数据抓取完成,进入下一部书本抓取函数...');
- // resolve(true);
- })
- })
- }
两者各有利弊,这里我们都做了测验测验。 预备了两个缺点保存的集合,errContentModel, errorCollectionModel,在插入掉足时 分别保存信息到对应的集合中,二者任选其一即可。增长集合来保存数据的原因是 便于一次性查看以及后续操作, 不消看日记。
(PS ,其实完全用 errorCollectionModel 这个集合就可以了 ,errContentModel这个集合可以完全保存章节信息)
- //保存掉足的数据名称
- const errorSpider = mongoose.Schema({
- chapter: String,
- section: String,
- url: String,
- key: String,
- bookName: String,
- author: String,
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 一、模块 or global很多初学者有个误区,就是在Python中须要设备一个全局的参数时,起首想到的是global关键>>>详细阅读
本文标题:NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享
地址:http://www.17bianji.com/lsqh/40135.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示