From b207bc0e10e2099784d68ea67517e1f46e2f4af7 Mon Sep 17 00:00:00 2001 From: Alex Chi Date: Tue, 4 Dec 2018 14:26:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E4=B8=8A=E6=B5=B7?= =?UTF-8?q?=E4=BA=A4=E9=80=9A=E5=A4=A7=E5=AD=A6=E6=9C=AC=E7=A7=91=E7=94=9F?= =?UTF-8?q?=E6=95=99=E5=8A=A1=E5=8A=9E=E3=80=8C=E5=9B=BD=E9=99=85=E5=8A=9E?= =?UTF-8?q?=E5=AD=A6=E3=80=8D=E6=A0=8F=E7=9B=AE=20(#1227)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 + router.js | 1 + .../sjtu/seiee/bjwb/international.js | 57 +++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 routes/universities/sjtu/seiee/bjwb/international.js diff --git a/docs/README.md b/docs/README.md index fb95223c8..4f7151439 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1274,6 +1274,8 @@ GitHub 官方也提供了一些 RSS: + + | 通知公告 | 工作信息 | 招生信息 | 培养信息 | 学位学科 | 国际交流 | 创新工程 | diff --git a/router.js b/router.js index 9742d09c7..b50011315 100644 --- a/router.js +++ b/router.js @@ -550,6 +550,7 @@ router.get('/sjtu/seiee/bjwb/major_select', require('./routes/universities/sjtu/ router.get('/sjtu/seiee/bjwb/major_transfer', require('./routes/universities/sjtu/seiee/bjwb/major_transfer')); router.get('/sjtu/seiee/bjwb/postgraduate', require('./routes/universities/sjtu/seiee/bjwb/postgraduate')); router.get('/sjtu/seiee/bjwb/abroad', require('./routes/universities/sjtu/seiee/bjwb/abroad')); +router.get('/sjtu/seiee/bjwb/international', require('./routes/universities/sjtu/seiee/bjwb/international')); router.get('/sjtu/gs/tzgg/:type?', require('./routes/universities/sjtu/gs/tzgg')); diff --git a/routes/universities/sjtu/seiee/bjwb/international.js b/routes/universities/sjtu/seiee/bjwb/international.js new file mode 100644 index 000000000..af655ca63 --- /dev/null +++ b/routes/universities/sjtu/seiee/bjwb/international.js @@ -0,0 +1,57 @@ +const axios = require('../../../../../utils/axios'); +const cheerio = require('cheerio'); +const url = require('url'); + +const host = 'http://bjwb.seiee.sjtu.edu.cn'; + +module.exports = async (ctx) => { + const link = url.resolve(host, `bkjwb/list/2281-1-20.htm`); + const response = await axios.get(link); + + const $ = cheerio.load(response.data); + + const list = $('.list_box_5 li') + .map((i, e) => ({ + date: $(e) + .children('span') + .text() + .slice(1, -1), + title: $(e) + .children('a') + .text() + .slice(2), + link: $(e) + .children('a') + .attr('href'), + })) + .get(); + + const out = await Promise.all( + list.map(async (item) => { + const itemUrl = url.resolve(host, item.link); + const cache = await ctx.cache.get(itemUrl); + if (cache) { + return Promise.resolve(JSON.parse(cache)); + } + + const response = await axios.get(itemUrl); + const $ = cheerio.load(response.data); + + const single = { + title: item.title, + link: itemUrl, + author: '上海交通大学电子信息与电气工程学院本科教务办', + description: $('.article_content').text(), + pubDate: new Date(item.date), + }; + ctx.cache.set(itemUrl, JSON.stringify(single), 24 * 60 * 60); + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: '上海交通大学电子信息与电气工程学院本科教务办 -- 国际办学通知', + link, + item: out, + }; +};