var cheerio = require('cheerio');
var iconv = require('iconv-lite');
var https= require('https');
var mysql = require('mysql');// 创建连接
var connection = mysql.createConnection({host     : 'localhost',user     : 'root',password : '12345678',database : 'testmysql'
});connection.connect();var bookList = [];
var Bindex = 0;function zhihuin(Bindex, index) {console.log(Bindex);return new Promise(function (resolve, reject) {var  addSql = 'INSERT INTO zhihuNum(Id, name, num) VALUES(?,?,?)';var  addSqlParams = [Bindex, bookList[index].name, bookList[index].num];// 这个连接也是异步的connection.query(addSql, addSqlParams,function (err, result) {if(err){console.log('[INSERT ERROR] - ',err.message);reject(0);}else {resolve(1);}});})
}function zhihuinnum(Bindex, index) {zhihuin(Bindex, index).then(function (data) {Bindex++;index++;if(index < bookList.length){zhihuinnum(Bindex, index);}else {connection.end();}},function (data) {index++;if(index < bookList.length){zhihuinnum(Bindex, index);}else {connection.end();}})
}function zhihunum(){var  sql = 'SELECT works FROM zhihuBook';
//查connection.query(sql,function (err, result) {if(err){console.log('[SELECT ERROR] - ',err.message);return;}else {for(let item of result){if(item.works != ''){// console.log(item.works.trim().split(/\s+/));var bookwork = item.works.match(/《.*?》/g);// console.log(bookwork)for (let ilist of bookwork){if(bookList.length == 0){bookList.push({'name': ilist, 'num': 1});}else {var i = 0;for(i = 0; i < bookList.length; i++){if(ilist == bookList[i].name){console.log(ilist, bookList[i].name)bookList[i].num++;break;}}if(i >= bookList.length){bookList.push({'name': ilist, 'num': 1});}}}}}// console.log(bookList);bookList = bookList.sort((x, y)=>{if(x.num < y.num){return 1;}else if(x.num > y.num){return  -1;}else{return 0;}});zhihuinnum(0, 0);}});
}zhihunum();
// connection.end();

1、数组的排序函数sort

bookList = bookList.sort((x, y)=>{if(x.num < y.num){return 1;}else if(x.num > y.num){return  -1;}else{return 0;}});

接受两个参数,都是数组中的元素,第二个参数在数组中的序列是在第一个参数后面,函数体中,返回正数,表明两个元素交换位置,返回0,表明相等。返回负数,表明不交换位置。

nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)四 存储提到的内容的次数相关推荐

  1. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)一 爬取所有话题类型

    首先爬取话题广场所有话题. var cheerio = require('cheerio'); var iconv = require('iconv-lite'); var https= requir ...

  2. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)六 在express中建立路由

    创建express的过程以及开启html引擎我就不赘述了. var express = require('express'); var router = express.Router(); var m ...

  3. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)六 html

    使用的是express后台返回html. res.render('xxx(html名称)'); 有可能在浏览器里看到的是静态文件,是因为浏览器把它认为是文件格式,所以要设置头 res.set({'Co ...

  4. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)五 对提到的关键字(书名或者电影名)去百度百科上爬取介绍

    var https = require('https'); var iconv = require('iconv-lite'); var cheerio = require('cheerio'); v ...

  5. 关于使用NodeJS+Express搭建服务器访问静态资源的一些填坑经验

    前言 NodeJs是一个能让前端开发工程师变成全栈工程师的神器.最近在搞一个私活,需要上传图片到服务器存储.按照以前的想法,是用Java写代码搭服务器.奈何,大学毕业后就一直在搞前端和安卓开发.Jav ...

  6. 虚拟服务器nodejs项目部署打包,nodejs+express搭建服务器及vue项目部署打包

    一.Express 1.Node.js 2.Express Express是一个保持最小规模的灵活的Node.js web应用程序开发框架,为web和移动应用程序提供一组强大的功能 安装: npm i ...

  7. nodejs+express搭建服务器

    1.Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能 ...

  8. NodeJs本地搭建服务器,模拟接口请求,获取json数据

    最近在学习Node.js,虽然就感觉学了点皮毛,感觉这个语言还不错,并且也会一步步慢慢的学着的,这里实现下NodeJs本地搭建服务器,模拟接口请求,获取json数据. 具体的使用我就不写了,这个博客写 ...

  9. nodejs+express搭建小程序后台服务器

    本文使用node.js和express来为小程序搭建服务器.node.js简单说是运行在服务端的javascript:而express是node.js的一个Web应用框架,使用express可以非常简 ...

最新文章

  1. hibernate 7大主键生成策略详解与对象状态
  2. 20180130之PYTHON学习笔记【PYTHON3写个自动听课功能】
  3. 探讨float类型的数值,为什么两个float不能直接相等
  4. IAR编译Z-Stack项目报错—Error[e46]: Undefined external “?V11” referred in AF
  5. 鼠标紧跟lable_紧跟当前软件工程趋势的12种方法
  6. 祝贺!吴晟成为 Apache 软件基金会首位中国董事!
  7. 结对编程-四则运算2
  8. BiLSTM+CRF医学病例命名实体识别项目
  9. 01. Django基础:Django介绍
  10. java实现画笔的画圆与矩形功能_JAVA怎么画出一个任意大小的圆形和矩形
  11. 通过BIOS设置启用CPU虚拟化解决VMware虚拟机不支持X86_64位linux操作系统安装问题
  12. 实验一 作业管理系统的总结与期望
  13. 知识笔记 - 平头哥ratel安卓Hook框架的安装与简单使用
  14. ansys linux卸载干净,安装了几次ansys14.5,都没有成功,删除重新安装后许可安装不了了...
  15. 深度解密Go语言之map
  16. 数学形态学之腐蚀算法
  17. 计算机如何更改后缀文件名,如何批量修改文件后缀名(任何文件的扩展名)?
  18. 微信小程序 - <textarea> 多行文本输入框 placeholder 属性换行显示文字(适用于 vant-weapp 的 Field 输入框文本域组件 van-field)样式修改的详细教程
  19. 万商云集企业SAAS服务平台
  20. Qt开发高级进阶: WebCamera(UVC)摄像头使用QAbstractVideoSurface捕获视频帧到QImage

热门文章

  1. 疯狂的红色石头孵化出疯狂的鸡蛋
  2. 关于微信小程序正式上线的那些事儿
  3. 9.nodejs 内置模块
  4. 洗牌问题(C语言实现)
  5. stem教育在中国法则
  6. android悬浮窗组件,Android 悬浮窗,悬浮view功能实现
  7. DELPHI HOOK随手笔记
  8. 元胞自动机(Cellular Automata)与城市规划及其MATLAB实现——莆田市城市发展预测
  9. 一年涌入3000家“他经济”现资本众生相
  10. 【jzoj4763】【旷野大计算】【莫队】