From 526f47fc9c92da769e3e64bd52cbfade827d176d Mon Sep 17 00:00:00 2001 From: talen Date: Fri, 23 Nov 2018 14:22:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9B=E5=B7=9D=E6=97=85=E6=B8=B8=E5=AD=A6?= =?UTF-8?q?=E9=99=A2=EF=BC=9A=E4=BC=98=E5=8C=96=E8=B7=AF=E7=94=B1=EF=BC=8C?= =?UTF-8?q?=E4=BE=BF=E4=BA=8E=E5=90=8E=E6=9C=9F=E6=89=A9=E5=B1=95=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E8=AF=A6=E7=BB=86=E4=BF=A1?= =?UTF-8?q?=E6=81=AFapi=20(#1189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 12 ++++- router.js | 6 ++- .../information-engineer-faculty/context.js | 44 +++++++++++++++++++ .../index.js} | 4 +- routes/universities/sctu/jwc/context.js | 44 +++++++++++++++++++ .../sctu/{jwc.js => jwc/index.js} | 14 +++--- 6 files changed, 113 insertions(+), 11 deletions(-) create mode 100644 routes/universities/sctu/information-engineer-faculty/context.js rename routes/universities/sctu/{xgxy.js => information-engineer-faculty/index.js} (91%) create mode 100644 routes/universities/sctu/jwc/context.js rename routes/universities/sctu/{jwc.js => jwc/index.js} (79%) diff --git a/docs/README.md b/docs/README.md index f08d720cd..c783064b5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1412,14 +1412,22 @@ category 列表: ### 四川旅游学院 - + - + + + + + + + | 教务通知 | 信息公告 | | -------- | -------- | | 13 | 14 | + + ### 电子科技大学 diff --git a/router.js b/router.js index 29fce831b..484fc4a74 100644 --- a/router.js +++ b/router.js @@ -596,8 +596,10 @@ router.get('/njust/cwc/:type', require('./routes/universities/njust/cwc')); router.get('/njust/gs/:type', require('./routes/universities/njust/gs')); // 四川旅游学院 -router.get('/sctu/xgxy', require('./routes/universities/sctu/xgxy')); -router.get('/sctu/jwc/:type?', require('./routes/universities/sctu/jwc')); +router.get('/sctu/xgxy', require('./routes/universities/sctu/information-engineer-faculty/index')); +router.get('/sctu/xgxy/:id', require('./routes/universities/sctu/information-engineer-faculty/context')); +router.get('/sctu/jwc/:type?', require('./routes/universities/sctu/jwc/index')); +router.get('/sctu/jwc/:type/:id', require('./routes/universities/sctu/jwc/context')); // 电子科技大学 router.get('/uestc/jwc/:type?', require('./routes/universities/uestc/jwc')); diff --git a/routes/universities/sctu/information-engineer-faculty/context.js b/routes/universities/sctu/information-engineer-faculty/context.js new file mode 100644 index 000000000..1a4ffaa9e --- /dev/null +++ b/routes/universities/sctu/information-engineer-faculty/context.js @@ -0,0 +1,44 @@ +const axios = require('../../../../utils/axios'); +const cheerio = require('cheerio'); +const iconv = require('iconv-lite'); + +module.exports = async (ctx) => { + const response = await axios({ + method: 'get', + url: `http://it.sctu.edu.cn/data.asp?fa=2&fl=12&zi=0&id=${ctx.params.id}`, + responseType: 'arraybuffer', + headers: { + Referer: 'http://it.sctu.edu.cn/', + }, + }); + + const formal = (buffer) => { + // HTML-buffer转为gb2312 + const data = iconv.decode(buffer, 'gb2312'); + + return cheerio.load(data); + }; + + const $ = formal(response.data); + + const list = $('.data'); + + ctx.state.data = { + title: '四川旅游学院', + link: 'http://www.sctu.edu.cn', + description: $('meta[name="description"]').attr('content'), + item: + list && + list + .map((index, item) => { + item = $(item); + + return { + title: $(item.find('.data_bt')).text(), + pubDate: $(item.find('.data_in')).text(), + description: item.find('.data_co').html(), + }; + }) + .get(), + }; +}; diff --git a/routes/universities/sctu/xgxy.js b/routes/universities/sctu/information-engineer-faculty/index.js similarity index 91% rename from routes/universities/sctu/xgxy.js rename to routes/universities/sctu/information-engineer-faculty/index.js index 5f94ea1a5..1a99f8f25 100644 --- a/routes/universities/sctu/xgxy.js +++ b/routes/universities/sctu/information-engineer-faculty/index.js @@ -1,4 +1,4 @@ -const axios = require('../../../utils/axios'); +const axios = require('../../../../utils/axios'); const cheerio = require('cheerio'); const iconv = require('iconv-lite'); @@ -19,7 +19,7 @@ module.exports = async (ctx) => { const list = $('.list_dt a'); ctx.state.data = { - title: '四川旅游学院首页', + title: '四川旅游学院信息与工程系', link: 'http://www.sctu.edu.cn', description: $('meta[name="description"]').attr('content'), item: diff --git a/routes/universities/sctu/jwc/context.js b/routes/universities/sctu/jwc/context.js new file mode 100644 index 000000000..cbe073b97 --- /dev/null +++ b/routes/universities/sctu/jwc/context.js @@ -0,0 +1,44 @@ +const axios = require('../../../../utils/axios'); +const cheerio = require('cheerio'); +const iconv = require('iconv-lite'); + +module.exports = async (ctx) => { + const response = await axios({ + method: 'get', + url: `http://www.sctu.edu.cn/jwc/content.asp?type=12&fl=${ctx.params.type}&id=${ctx.params.id}`, + responseType: 'arraybuffer', + headers: { + Referer: 'http://sctu.edu.cn/', + }, + }); + + const formal = (buffer) => { + // HTML-buffer转为gb2312 + const data = iconv.decode(buffer, 'gb2312'); + + return cheerio.load(data); + }; + + const $ = formal(response.data); + + const list = $('#list2'); + + ctx.state.data = { + title: '四川旅游学院信息与工程学院', + link: 'http://www.sctu.edu.cn', + description: $('meta[name="description"]').attr('content'), + item: + list && + list + .map((index, item) => { + item = $(item); + + return { + title: $(item.find('.title')).text(), + pubDate: $(item.find('.info')).text(), + description: item.html(), + }; + }) + .get(), + }; +}; diff --git a/routes/universities/sctu/jwc.js b/routes/universities/sctu/jwc/index.js similarity index 79% rename from routes/universities/sctu/jwc.js rename to routes/universities/sctu/jwc/index.js index 035b124f2..4cb6cb9ba 100644 --- a/routes/universities/sctu/jwc.js +++ b/routes/universities/sctu/jwc/index.js @@ -1,4 +1,4 @@ -const axios = require('../../../utils/axios'); +const axios = require('../../../../utils/axios'); const cheerio = require('cheerio'); const iconv = require('iconv-lite'); @@ -13,15 +13,19 @@ module.exports = async (ctx) => { }, }); - // HTML-buffer转为gb2312 - const data = iconv.decode(response.data, 'gb2312'); + const formal = (buffer) => { + // HTML-buffer转为gb2312 + const data = iconv.decode(buffer, 'gb2312'); - const $ = cheerio.load(data); + return cheerio.load(data); + }; + + const $ = formal(response.data); const list = $('#list1 ul li'); ctx.state.data = { - title: '四川旅游学院首页', + title: '四川旅游学院', link: 'http://www.sctu.edu.cn', description: $('meta[name="description"]').attr('content'), item: