├── mongoose ├── schemas │ ├── x3dSchema.js │ └── baseSchema.js ├── controllers │ ├── index.js │ ├── pl3.js │ ├── x3d.js │ ├── # idae - MongoDB config start - 2016-05-02 │ ├── dlt.js │ ├── ssq.js │ ├── 11x5.js │ ├── kuai3.js │ └── MTLater.js ├── config │ └── mongoConfig.js └── models │ └── baseModel.js ├── app.js ├── package.json └── readme.md /mongoose/schemas/x3dSchema.js: -------------------------------------------------------------------------------- 1 | const Schema = require("../config/mongoConfig") 2 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const Koa = require('koa'); 2 | var app = new Koa(); 3 | const index = require("./mongoose/controllers/index"); 4 | app.listen(3001); -------------------------------------------------------------------------------- /mongoose/controllers/index.js: -------------------------------------------------------------------------------- 1 | const ssq = require('./ssq');//双色球 2 | const d11 = require("./11x5");//11选5 3 | const dlt = require("./dlt");//大乐透 4 | const x3d = require('./x3d');//3D 5 | const kuai3 = require('./kuai3');//快3 6 | exports = module.exports = {} -------------------------------------------------------------------------------- /mongoose/schemas/baseSchema.js: -------------------------------------------------------------------------------- 1 | const Schema = require("../config/mongoConfig") 2 | 3 | const baseSchema = new Schema({ 4 | data: Object, 5 | hotCold: Object, 6 | result: Number, 7 | total: Number 8 | }) 9 | 10 | epxorts = module.exports = baseSchema; -------------------------------------------------------------------------------- /mongoose/controllers/pl3.js: -------------------------------------------------------------------------------- 1 | const pl3 = require('../models/baseModel').pl3; 2 | var mtInterval = require('./MTLater'); 3 | //排列3 4 | var composite = []; 5 | // //配置每天22点跟新数据 6 | composite.push({ 7 | h: [20,21], 8 | m: [30,35,40,42,43,44,45] 9 | }) 10 | 11 | var sched = { 12 | schedules: composite 13 | } 14 | mtInterval(sched,pl3,'pl3'); 15 | 16 | exports = module.exports = {} -------------------------------------------------------------------------------- /mongoose/controllers/x3d.js: -------------------------------------------------------------------------------- 1 | const x3d = require('../models/baseModel').x3d; 2 | var mtInterval = require('./MTLater'); 3 | //3D开奖时间每晚20:30分。 4 | 5 | var composite = []; 6 | 7 | composite.push({ 8 | h: [20,21], 9 | m: [30,32,35,40,42,43,44,45] 10 | }) 11 | 12 | var sched = { 13 | schedules: composite 14 | } 15 | mtInterval(sched,x3d,'x3d'); 16 | 17 | exports = module.exports = {} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lotteryspider", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "koa": "^2.5.3", 13 | "later": "^1.2.0", 14 | "mongoose": "^5.3.3", 15 | "request": "^2.88.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /mongoose/config/mongoConfig.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | mongoose.Promise = global.Promise; 3 | mongoose.connect('mongodb://localhost:27017/lottery',{useNewUrlParser:true},(err)=>{ 4 | if(err){ 5 | console.log("数据库连接失败"); 6 | }else{ 7 | console.log("数据库连接成功"); 8 | } 9 | }) 10 | //导出mongoose的Schema构造函数 11 | const Schema = mongoose.Schema; 12 | 13 | exports = module.exports = Schema; -------------------------------------------------------------------------------- /mongoose/controllers/# idae - MongoDB config start - 2016-05-02: -------------------------------------------------------------------------------- 1 | # idae - MongoDB config start - 2016-05-02 2 | 3 | # 设置数据文件的存放目录 4 | dbpath = /usr/local/mongodb/data/test/db 5 | # 设置日志文件的存放目录及其日志文件名 6 | logpath = /usr/local/mongodb/data/test/logs/mongodb.log 7 | # 设置端口号(默认的端口号是 27017) 8 | port = 27017 9 | 10 | # 设置为以守护进程的方式运行,即在后台运行 11 | fork = true 12 | 13 | # nohttpinterface = true 14 | nohttpinterface = true 15 | # idae - MongoDB config end - 2016-05-02 -------------------------------------------------------------------------------- /mongoose/controllers/dlt.js: -------------------------------------------------------------------------------- 1 | const dlt = require('../models/baseModel').dlt; 2 | var mtInterval = require('./MTLater'); 3 | //双色球 4 | var composite = []; 5 | var m = []; 6 | for(var i=1;i<=60;){ 7 | m.push(i); 8 | i+=1; 9 | } 10 | // //配置每天22点跟新数据 11 | composite.push({ 12 | dw:[2,4,7], 13 | h: [21,22], 14 | m: m 15 | }) 16 | 17 | var sched = { 18 | schedules: composite 19 | } 20 | mtInterval(sched,dlt,'dlt'); 21 | 22 | exports = module.exports = {} -------------------------------------------------------------------------------- /mongoose/controllers/ssq.js: -------------------------------------------------------------------------------- 1 | // 双色球控制器,实现双色球数据抓取 2 | const ssq = require('../models/baseModel').ssq; 3 | var mtInterval = require('./MTLater'); 4 | //双色球 5 | var composite = []; 6 | var m = []; 7 | for(var i=1;i<=60;){ 8 | m.push(i); 9 | i+=3; 10 | } 11 | // //配置每天22点跟新数据 12 | composite.push({ 13 | h: [21,22], 14 | dw:[1,3,5], 15 | m: m 16 | }) 17 | 18 | var sched = { 19 | schedules: composite 20 | } 21 | mtInterval(sched,ssq,'ssq'); 22 | exports = module.exports = {} 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /mongoose/controllers/11x5.js: -------------------------------------------------------------------------------- 1 | 2 | var gdd11 = require("../models/baseModel").gdd11; 3 | var hljd11 = require("../models/baseModel").hljd11; 4 | var zjd11 = require("../models/baseModel").zjd11; 5 | var lnd11 = require("../models/baseModel").lnd11; 6 | var mtInterval = require('./MTLater'); 7 | 8 | var composite = [];//设定触发事件的事件段 9 | var m = [];////在指定的分钟数触发事件 10 | for(var i=3;i<60;i+=10){ 11 | m.push(i); 12 | } 13 | for(var i=8;i<=23;i++){ 14 | composite.push({ 15 | h: [i], //在指定的小时里触发事件 16 | m: m, //在指定的分钟数触发事件 17 | }) 18 | } 19 | //配置定时任务 20 | var sched = { 21 | schedules: composite 22 | } 23 | // later.date.localTime(); 24 | 25 | var types = ["gdd11","hljd11","zjd11","lnd11"]; 26 | var objArr = [gdd11,hljd11,zjd11,lnd11]; 27 | for(let i=0;i{ 92 | var ssqURL = "这个接口你要自己去抓了,可以用charles.记住不要违法哦"; 93 | request.get(ssqURL,(err,responsed,body)=>{ 94 | console.log(body); 95 | }) 96 | 97 | },sched) 98 | 99 | ``` 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /mongoose/controllers/MTLater.js: -------------------------------------------------------------------------------- 1 | var later = require("later"); 2 | var request = require("request"); 3 | later.date.localTime(); 4 | const mtInterval = function(sched,gameObj,gameEn){ 5 | later.setInterval(()=>{ 6 | var url = "http://api.caipiao.163.com/missNumber_trend.html?product=caipiao_client&gameEn="+gameEn; 7 | request.get(url,async (err,responsed,body)=>{ 8 | if(body){ 9 | var res = JSON.parse(body); 10 | res.length = res.data.length;//数组的长度 11 | var data = await new Promise((resolve,reject)=>{ 12 | gameObj.find({},{"data":{"$slice":1}}).then((data)=>{ 13 | resolve({data:data,obj:gameObj}); 14 | }) 15 | }) 16 | if(!data.data.length){ 17 | // 如果不存在数据,则新建数据库表 18 | console.log("不存在数据"); 19 | new data.obj(res).save().then((rs)=>{ 20 | // console.log(rs); 21 | console.log("ssq数据"); 22 | }) 23 | }else{ 24 | var period = data.data[0].data[0].period; 25 | var newDataArr = [];//要插入数据库的新数据 26 | if(res.data.length){ 27 | var length = res.data.length; 28 | console.log(gameEn+"数据长度"+length); 29 | for(let j=0;j{ 53 | console.log("插入结果"); 54 | console.log(resp); 55 | }) 56 | } 57 | 58 | } 59 | } 60 | } 61 | }) 62 | },sched); 63 | } 64 | exports = module.exports = mtInterval; --------------------------------------------------------------------------------