diff --git a/docs/government.md b/docs/government.md index bb2b65b099..34a95d572d 100644 --- a/docs/government.md +++ b/docs/government.md @@ -69,6 +69,18 @@ pageClass: routes +### 山西省人民政府 + +#### 山西省人社厅 + + + +| 通知公告 | 公务员考试 | 事业单位考试 | 专业技术人员资格考试 | 其他考试 | +| :-------: | :--------: | :----------: | :------------------: | :-------: | +| rsks-tzgg | rsks-gwyks | rsks-sydwks | rsks-zyjsryzgks | rsks-qtks | + + + ### 南京市人民政府 diff --git a/lib/router.js b/lib/router.js index 7842f9719b..064c3762bd 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1033,6 +1033,7 @@ router.get('/gov/statecouncil/briefing', require('./routes/gov/statecouncil/brie router.get('/gov/news/:uid', require('./routes/gov/news')); router.get('/gov/suzhou/news/:uid', require('./routes/gov/suzhou/news')); router.get('/gov/suzhou/doc', require('./routes/gov/suzhou/doc')); +router.get('/gov/shanxi/rst/:category', require('./routes/gov/shanxi/rst')); // 中华人民共和国生态环境部 router.get('/gov/mee/gs', require('./routes/gov/mee/gs')); diff --git a/lib/routes/gov/shanxi/rst.js b/lib/routes/gov/shanxi/rst.js new file mode 100644 index 0000000000..32e6e02a58 --- /dev/null +++ b/lib/routes/gov/shanxi/rst.js @@ -0,0 +1,74 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const resolve_url = require('url').resolve; + +module.exports = async (ctx) => { + const category = ctx.params.category; + let url = ''; + let title = ''; + switch (category) { + case 'rsks-tzgg': + url = `http://rst.shanxi.gov.cn/rsks/tzgg/`; + title = '山西人事考试专栏 - 通知公告'; + break; + case 'rsks-gwyks': + url = 'http://rst.shanxi.gov.cn/rsks/gwyks/'; + title = '山西人事考试专栏 - 公务员考试'; + break; + case 'rsks-sydwks': + url = `http://rst.shanxi.gov.cn/rsks/sydwks/`; + title = '山西人事考试专栏 - 事业单位考试'; + break; + case 'rsks-zyjsryzgks': + url = `http://rst.shanxi.gov.cn/rsks/zyjsryzgks/`; + title = '山西人事考试专栏 - 专业技术人员资格考试'; + break; + case 'rsks-qtks': + url = `http://rst.shanxi.gov.cn/rsks/qtks/`; + title = '山西人事考试专栏 - 其他考试'; + break; + default: + console.log('pattern not matched'); + } + const response = await got({ + method: 'get', + url: url, + Host: 'rst.shanxi.gov.cn', + responseType: 'buffer', + }); + + const $ = cheerio.load(response.data); + const list = $('.exam-main ul.list-items-box-inner li'); + + ctx.state.data = { + title: title, + link: url, + item: await Promise.all( + list && + list + .map(async (index, item) => { + item = $(item); + + // // 获取全文 + const contenlUrl = item.find('a').attr('href'); + const link = resolve_url(url, contenlUrl); + const description = await ctx.cache.tryGet(link, async () => { + const fullText = await got({ + method: 'get', + url: link, + Host: 'rst.shanxi.gov.cn', + responseType: 'buffer', + }); + const fullTextData = cheerio.load(fullText.data); + return fullTextData('.common-detail-inner').html(); + }); + return { + title: item.find('a').text(), + description: description, + link: link, + }; + }) + .get() + ), + }; +};