chapterlist.js
- /**
- * 初始化人口
- */
- const contentListInit = async() => {
- //获取书本列表
- const list = await bookHelper.getBookLi(bookListModel);
- if (!list) {
- logger.error('初始化萌芽书本目次掉败');
- return;
- }
- const res = await mapBookList(list);
- if (!res) {
- logger.error('抓取章节信息,调用 getCurBookSectionList() 进行串行遍历操作,履行完成回调掉足,缺点信息已打印,请查看日记!');
- return;
- }
- return res;
- }
内容抓取的思虑
书本目次抓取其实逻辑异常简单,只须要应用async.mapLimit做一个遍历就可以保存数据了,然则我们在保存内容的时刻 简化的逻辑其实就是 遍历章节列表 抓取链接里的内容。然则实际的情况是链接数量多达几万 我们大年夜内存占用角度也不克不及全部保存到一个数组中,然后对其遍历,所以我们须要对内容抓取进行单位化。
这里应用了 async.mapLimit(list, 1, (series, callback) => {}) 这个办法来进行遍历,弗成避免的用到了回调,感到很恶心。async.mapLimit()的第二个参数可以设置同时请求数量。
- /*
- * 内容抓取步调:
- * 第一步获得书本列表, 经由过程书本列表查到一条书本记录下 对应的所有章节列表,
- * 第二步 对章节列表进行遍历获取内容保存到数据库中
- * 第三步 保存完数据后 回到第一步 进行下一步书本的内容抓取和保存
- */
- /**
- * 初始化人口
- */
- const contentListInit = async() => {
- //获取书本列表
- const list = await bookHelper.getBookList(bookListModel);
- if (!list) {
- logger.error('初始化萌芽书本目次掉败');
- return;
- }
- const res = await mapBookList(list);
- if (!res) {
- logger.error('抓取章节信息,调用 getCurBookSectionList() 进行串行遍历操作,履行完成回调掉足,缺点信息已打印,请查看日记!');
- return;
- }
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 一、模块 or global很多初学者有个误区,就是在Python中须要设备一个全局的参数时,起首想到的是global关键>>>详细阅读
本文标题:NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享
地址:http://www.17bianji.com/lsqh/40135.html
1/2 1

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