feat(route): add 浙江省公务员考试录用网 (#13526)

This commit is contained in:
Ethan Shen 2023-10-16 08:21:01 +08:00 committed by GitHub
parent c05524bd87
commit bb820b029a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 129 additions and 0 deletions

View File

@ -87,4 +87,5 @@ module.exports = {
'/wuhan/sy/whyw': ['nczitzk'],
'/xinyi/:path+': ['ShuiHuo'],
'/xuzhou/hrss/:category?': ['nczitzk'],
'/zhejiang/gwy/:category?/:column?': ['nczitzk'],
};

View File

@ -1168,4 +1168,15 @@ module.exports = {
},
],
},
'zjks.gov.cn': {
_name: '浙江省公务员考试录用网',
'.': [
{
title: '地市专栏',
docs: 'https://docs.rsshub.app/routes/government#zhe-jiang-sheng-gong-wu-yuan-kao-shi-lu-yong-wang',
source: ['/zjgwy/website/init.htm', '/zjgwy/website/queryDetail.htm', '/zjgwy/website/queryMore.htm'],
target: '/gov/zhejiang/gwy',
},
],
},
};

View File

@ -78,4 +78,5 @@ module.exports = function (router) {
router.get('/wuhan/sy/whyw', require('./wuhan/whyw'));
router.get(/xinyi(\/[\w/-]+)?/, require('./xinyi/xinyi'));
router.get('/xuzhou/hrss/:category?', require('./xuzhou/hrss'));
router.get('/zhejiang/gwy/:category?/:column?', require('./zhejiang/gwy'));
};

View File

@ -0,0 +1,84 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const { category, column } = ctx.params;
const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 50;
const rootUrl = 'http://gwy.zjks.gov.cn';
const currentUrl = new URL(`zjgwy/website/${category ? 'queryMore' : 'init'}.htm`, rootUrl).href;
const detailUrl = new URL('zjgwy/website/queryDetail.htm', rootUrl).href;
const { data: response } = await got.post(currentUrl, {
form: {
dsdm: column,
mkxh: category,
oldornew: 'new',
},
});
const $ = cheerio.load(response);
let items = $('a[onclick^="queryDetail"]')
.slice(0, limit)
.toArray()
.map((item) => {
item = $(item);
const matches = item.prop('onclick').match(/queryDetail\('?(\d+)'?, '?(\d+)'?\);/);
return {
title: item.text(),
link: detailUrl,
category: matches[1],
guid: `zjks-${matches[1]}-${matches[2]}`,
pubDate: parseDate(item.parent().next().text()),
tzid: matches[2],
};
});
items = await Promise.all(
items.map((item) =>
ctx.cache.tryGet(item.guid, async () => {
const { data: detailResponse } = await got.post(detailUrl, {
form: {
mkxh: item.category,
oldornew: 'new',
dsdm: column,
tzid: item.tzid,
},
});
const content = cheerio.load(detailResponse);
item.description = content('div.ibox-content').last().html();
item.category = [content('div.ibox-title').last().find('h5').first().text()];
const files = content('a.ke-insertfile');
if (files.length > 0) {
const file = files.first();
item.enclosure_url = file.prop('href');
}
delete item.tzid;
return item;
})
)
);
const columnName = $('button.btn-success').last().text();
const categoryName = $('table').parent().prev().find('h5').text();
ctx.state.data = {
item: items,
title: `${$('title').text()} - ${columnName}${categoryName}`,
link: currentUrl,
description: $('div.title-font2').text(),
subtitle: `${columnName}${categoryName}`,
author: $('div.title-font').text(),
allowEmpty: true,
};
};

View File

@ -1144,6 +1144,38 @@ Language
</Route>
## 浙江省公务员考试录用网 {#zhe-jiang-sheng-gong-wu-yuan-kao-shi-lu-yong-wang}
### 通知 {#zhe-jiang-sheng-gong-wu-yuan-kao-shi-lu-yong-wang-tong-zhi}
<Route author="nczitzk" example="/gov/zhejiang/gwy/1" path="/gov/zhejiang/gwy/:category?/:column?" paramsDesc={['分类,见下表,默认为全部', '地市专栏见下表默认为全部']}>
| 分类 | id |
| ------------ | --- |
| 重要通知 | 1 |
| 招考公告 | 2 |
| 招考政策 | 3 |
| 面试体检考察 | 4 |
| 录用公示专栏 | 5 |
| 地市 | id |
| ------------ | ----- |
| 浙江省 | 133 |
| 浙江省杭州市 | 13301 |
| 浙江省宁波市 | 13302 |
| 浙江省温州市 | 13303 |
| 浙江省嘉兴市 | 13304 |
| 浙江省湖州市 | 13305 |
| 浙江省绍兴市 | 13306 |
| 浙江省金华市 | 13307 |
| 浙江省衢州市 | 13308 |
| 浙江省舟山市 | 13309 |
| 浙江省台州市 | 13310 |
| 浙江省丽水市 | 13311 |
| 省级单位 | 13317 |
</Route>
## 浙江省土地使用权网上交易系统 {#zhe-jiang-sheng-tu-di-shi-yong-quan-wang-shang-jiao-yi-xi-tong}
### 公告信息 {#zhe-jiang-sheng-tu-di-shi-yong-quan-wang-shang-jiao-yi-xi-tong-gong-gao-xin-xi}