feat: 增加山西省人社厅人事考试 (#2798)

* fix: 获取不到磁力链接的BUG;add: 正文中添加下载链接与网盘链接

* add: 山西省人社厅人事考试
This commit is contained in:
wolfyu1991
2019-08-09 11:58:48 +08:00
committed by DIYgod
parent f58ef7d8a8
commit dedd9a7efe
3 changed files with 87 additions and 0 deletions

View File

@@ -69,6 +69,18 @@ pageClass: routes
</Route>
### 山西省人民政府
#### 山西省人社厅
<Route author="wolfyu1991" example="/gov/shanxi/rst/rsks-tzgg" path="/gov/shanxi/rst/:category" :paramsDesc="['分类名']">
| 通知公告 | 公务员考试 | 事业单位考试 | 专业技术人员资格考试 | 其他考试 |
| :-------: | :--------: | :----------: | :------------------: | :-------: |
| rsks-tzgg | rsks-gwyks | rsks-sydwks | rsks-zyjsryzgks | rsks-qtks |
</Route>
### 南京市人民政府
<Route author="ocleo1" example="/gov/city/nanjing/news" path="/gov/city/nanjing/:category" :paramsDesc="['分类名']">

View File

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

View File

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