四川旅游学院:优化路由,便于后期扩展,增加获取详细信息api (#1189)

This commit is contained in:
talen 2018-11-23 14:22:29 +08:00 committed by DIYgod
parent 9481f24db4
commit 526f47fc9c
6 changed files with 113 additions and 11 deletions

View File

@ -1412,14 +1412,22 @@ category 列表:
### 四川旅游学院
<route name="信息与工程学院动态公告" author="talenHuang" example="/sctu/xgxy" path="/universities/sctu/xgxy"/>
<route name="信息与工程学院动态公告列表" author="talenHuang" example="/sctu/xgxy" path="/universities/sctu/information-engineer-faculty/index">
<route name="教务处" author="talenHuang" example="/sctu/jwc/13" path="/universities/sctu/jwc:type?" :paramsDesc="['可选参数, 默认为 `13`']">
</route>
<route name="信息与工程学院公告详情" author="talenHuang" example="/sctu/xgxy/652" path="/universities/sctu/information-engineer-faculty/context/:id" :paramsDesc="['文章id']">
</route>
<route name="教务处" author="talenHuang" example="/sctu/jwc/13" path="/universities/sctu/jwc/index:type?" :paramsDesc="['可选参数, 默认为 `13`']">
| 教务通知 | 信息公告 |
| -------- | -------- |
| 13 | 14 |
<route name="教务处通告详情" author="talenHuang" example="/sctu/jwc/13/645" path="/universities/sctu/jwc/context/:type/:id" :paramsDesc="['通知类型','文章id']">
</route>
### 电子科技大学

View File

@ -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'));

View File

@ -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(),
};
};

View File

@ -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:

View File

@ -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(),
};
};

View File

@ -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: