diff --git a/docs/university.md b/docs/university.md index 06b2d78378..265cc69f8f 100644 --- a/docs/university.md +++ b/docs/university.md @@ -1942,6 +1942,10 @@ type 列表: +### 中国科学院电工研究所 科研动态 + + + ## 中国农业大学 ### 中国农业大学研招网通知公告 diff --git a/lib/router.js b/lib/router.js index 62c74806fb..af708052a4 100644 --- a/lib/router.js +++ b/lib/router.js @@ -666,6 +666,7 @@ router.get('/gdut/news', require('./routes/universities/gdut/news')); // 中国科学院 router.get('/cas/sim/academic', require('./routes/universities/cas/sim/academic')); router.get('/cas/mesalab/kb', require('./routes/universities/cas/mesalab/kb')); +router.get('/cas/iee/kydt', require('./routes/universities/cas/iee/kydt')); router.get('/cas/cg/:caty?', require('./routes/universities/cas/cg/index')); // 中国传媒大学 diff --git a/lib/routes/universities/cas/iee/kydt.js b/lib/routes/universities/cas/iee/kydt.js new file mode 100644 index 0000000000..d489ca8c30 --- /dev/null +++ b/lib/routes/universities/cas/iee/kydt.js @@ -0,0 +1,47 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const rootUrl = 'http://www.iee.cas.cn/xwzx/kydt'; + const response = await got({ + method: 'get', + url: rootUrl, + }); + + const $ = cheerio.load(response.data); + const list = $('li.entry .entry-content-title') + .slice(0, 15) + .map((_, item) => { + item = $(item); + const a = item.find('a'); + return { + title: a.text(), + link: a.attr('href'), + }; + }) + .get(); + + const items = await Promise.all( + list.map( + async (item) => + await ctx.cache.tryGet(item.link, async () => { + const detailResponse = await got({ + method: 'get', + url: item.link, + }); + const content = cheerio.load(detailResponse.data); + + item.description = content('.article-content').html(); + item.pubDate = new Date(content('time').text().split(':')[1] + ' GMT+8').toUTCString(); + + return item; + }) + ) + ); + + ctx.state.data = { + title: '科研成果 - 中国科学院电工研究所', + link: rootUrl, + item: items, + }; +};