作家
登录

NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享

作者: 来源: 2017-12-25 14:04:49 阅读 我要评论

缺点 : 也很明显 就是慢 ,细心想想如不雅要爬几万个页面 做 几万次*N 数据库的操作 这里还可以做一个缓存器一次性保存必定条数 当条数达到再做保存如许也是一个不错的选择。

  1. /** 
  2.  * 遍历单条书本下所有章节 调用内容抓取办法 
  3.  * @param {*} list  
  4.  */ 
  5. const mapSectionList = (list) => { 
  6.     return new Promise((resolve, reject) => { 
  7.         async.mapLimit(list, 1, (series, callback) => { 
  8.             let doc = series._doc; 
  9.             getContent(doc, callback) 
  10.         }, (err, result) => { 
  11.             if (err) { 
  12.                 logger.error('书本目次抓取异步履行掉足!'); 
  13.                 logger.error(err); 
  14.                 reject(false); 
  15.                 return
  16.             } 
  17.             const bookName = list[0].bookName; 
  18.             const key = list[0].key
  19.  
  20.             // 以整体为单位进行保存 
  21.             saveAllContentToDB(result, bookName, key, resolve); 
  22.  
  23.             //以每篇文┞仿作为单位进行保存 
  24.             // logger.info(bookName + '数据抓取完成,进入下一部书本抓取函数...'); 
  25.             // resolve(true); 
  26.  
  27.         }) 
  28.     }) 

两者各有利弊,这里我们都做了测验测验。 预备了两个缺点保存的集合,errContentModel, errorCollectionModel,在插入掉足时 分别保存信息到对应的集合中,二者任选其一即可。增长集合来保存数据的原因是 便于一次性查看以及后续操作, 不消看日记。

(PS ,其实完全用 errorCollectionModel 这个集合就可以了 ,errContentModel这个集合可以完全保存章节信息)

  1. //保存掉足的数据名称 
  2. const errorSpider = mongoose.Schema({ 
  3.     chapter: String, 
  4.     section: String, 
  5.     url: String, 
  6.     key: String, 
  7.     bookName: String, 
  8.     author: String, 

      推荐阅读

      一种Python全局配置规范以及其魔改

    【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 一、模块 or global很多初学者有个误区,就是在Python中须要设备一个全局的参数时,起首想到的是global关键>>>详细阅读


    本文标题:NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享

    地址:http://www.17bianji.com/lsqh/40135.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)