node.js平台每5秒钟获取某只股票的数据并录入mongodb
2015-03-30 10:30
633 查看
本文尝试在node.js平台上,编写js脚本,将某只股票的实时信息导入mongodb,以便页面上实时调用,实时显示。新浪的股票接口是eg:http://hq.sinajs.cn/list=sh601857返回GB2312编码的内容:
var hq_str_sh601857="中国石油,11.66,11.70,11.63,11.66,11.61,11.63,11.65,9451577,109989741,146523,11.63,828300,11.62,926900,11.61,974100,11.60,238700,11.59,928100,11.65,213889,11.66,1052200,11.67,85700,11.68,386101,11.69,2015-03-30,09:33:17,00";
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。 0:”中国石化”,股票名字; 1:”27.55″,今日开盘价; 2:”27.25″,昨日收盘价; 3:”26.91″,当前价格; 4:”27.55″,今日最高价; 5:”26.20″,今日最低价; 6:”26.91″,竞买价,即“买一”报价; 7:”26.92″,竞卖价,即“卖一”报价; 8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百; 9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万; 10:”4695″,“买一”申请4695股,即47手; 11:”26.91″,“买一”报价; 12:”57590″,“买二” 13:”26.90″,“买二” 14:”14700″,“买三” 15:”26.89″,“买三” 16:”14300″,“买四” 17:”26.88″,“买四” 18:”15100″,“买五” 19:”26.87″,“买五” 20:”3100″,“卖一”申报3100股,即31手; 21:”26.92″,“卖一”报价 (22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况” 30:”2008-01-11″,日期; 31:”15:05:32″,时间;
但是该数据接口有个问题,虽然是5秒更新,但是它5s时间不是十分精确,5秒刷新后,有可能数据没有变化
使用node.js的http请求 获取页面信息,并进行分析后录入数据库,代码如下
// author: hunterzhao// created time:2015/3/28var mongodb = require('mongodb');var http = require('http');var server = new mongodb.Server('localhost', 27017, {auto_reconnect:true});//连接的数据库为stockvar db = new mongodb.Db('stock', server, {safe:true});db.open(function(err, db){if(!err){console.log('connect successful');db.createCollection('nows', {safe:true}, function(err, collection){if(err){console.log(err);}else{setInterval(getData,5000);function getData(){var url = "http://hq.sinajs.cn/list=sh601857";http.get(url, function(res) {var source = "";res.on('data', function(data) {source += data;});res.on('end', function() {var now = new Date();var hh = now.getHours();var mm = now.getMinutes(); //minutesvar ss = now.getSeconds();var clock ="";if(hh < 10)clock += "0";clock += hh + ":";if (mm < 10) clock += '0';clock += mm+":";if (ss < 10) clock += '0';clock += ss;var elements=source.split(",");var nameJson ="zhao";var stockidJson ="601857";var dayJson= elements[30];var timeJson= clock;var priceJson= Number(elements[3]);var volumeJson=Number(elements[8]);var stockIndexJson=0;console.log();var json ={name:nameJson,stockid:stockidJson,day:dayJson,time:timeJson,price:priceJson,volume:volumeJson,stockIndex:stockIndexJson};collection.insert(json,{safe:true},function(err,result){console.log(result);});});}).on('error', function() {console.log("获取数据出现错误");});}}});}})
相关文章推荐
- node.js利用mongoose获取mongodb数据的格式化问题详解
- 解决vue+express+mongoDB项目中node.js获取不到post数据
- Node.js爬取微信h5牛牛金花网站平台开发数据
- Wind量化平台-C++获取股票数据-C++金融数据分析利器 V5.0
- Node.js + MongoDB + AngularJS - 5 在Node.js中处理数据I0-1
- mongoDB+nodeJS+vue数据传递
- 平台立体监控nodejs+mongodb
- nodejs+express一个很经典的问题--异步获取数据模板渲染
- Node.js + MongoDB + AngularJS - 5 在Node.js中处理数据I0-2
- Highcharts+NodeJS搭建数据可视化平台
- Node.js 事件驱动获取数据
- 使用NodeJS+AngularJS+MongoDB实现一个Web数据扒取-分析-展示的系统
- Highcharts+NodeJS搭建数据可视化平台
- 解决在IE中获取数据的缓存问题,运行环境为node.js
- node.js+Ajax实现获取HTTP服务器返回数据
- node.js使用mongodb存储数据-客户端使用
- node.js从数据库获取数据
- 基于Node.js平台mongoDB开发——mongoskin(by vczero)
- 解决在IE中获取数据的缓存问题,运行环境为node.js
- Node.js笔记(七)读取mongoDB的数据并显示