diff --git a/docs/government.md b/docs/government.md index eb76ada010..105f7a9570 100644 --- a/docs/government.md +++ b/docs/government.md @@ -28,6 +28,16 @@ pageClass: routes +### 广东省深圳市人民政府 + + + +| 通知公告 | 政府采购 | 资金信息 | 重大项目 | +| :------: | :------: | :------: | :------: | +| tzgg | zfcg | zjxx | zdxm | + + + ## 国家税务总局 ### 最新文件 diff --git a/lib/router.js b/lib/router.js index 5d5f0b7bd1..e039456b23 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1332,6 +1332,8 @@ router.get('/gov/beijing/bjeea/:type', require('./routes/gov/beijing/eea')); // 广东省教育厅 router.get('/gov/guangdong/edu/:caty', require('./routes/gov/guangdong/edu')); +// 广东省深圳市 +router.get('/gov/shenzhen/xxgk/zfxxgj/:caty', require('./routes/gov/shenzhen/xxgk/zfxxgj')); // 日本国外務省記者会見 router.get('/go.jp/mofa', require('./routes/go.jp/mofa/main')); diff --git a/lib/routes/gov/shenzhen/xxgk/zfxxgj.js b/lib/routes/gov/shenzhen/xxgk/zfxxgj.js new file mode 100644 index 0000000000..a9cf1f4686 --- /dev/null +++ b/lib/routes/gov/shenzhen/xxgk/zfxxgj.js @@ -0,0 +1,63 @@ +const url = require('url'); +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +const rootUrl = 'http://www.sz.gov.cn/cn/xxgk/zfxxgj/'; + +const config = { + tzgg: { + link: 'tzgg/', + title: '通知公告', + }, + zjxx: { + link: 'zjxx/szfczyjs/', + title: '资金信息', + }, + zfcg: { + link: 'zfcg/zfcgml', + title: '政府采购', + }, + zdxm: { + link: 'zdxm', + title: '重大项目', + } +}; + +module.exports = async (ctx) => { + const cfg = config[ctx.params.caty]; + if (!cfg) { + throw Error('Bad category. See docs'); + } + + const currentUrl = url.resolve(rootUrl, cfg.link); + const response = await got({ method: 'get', url: currentUrl }); + const $ = cheerio.load(response.data); + const list = $('div.zx_ml_list ul li span.tit') + .map((_, item) => { + item = $(item).find('a'); + return { + title: item.text(), + link: item.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('div.concent_center').html(); + item.pubDate = new Date(content('td[align="right"]').text().replace(/发布日期:/, '') + ' GMT+8').toUTCString(); + return item; + }) + ) + ); + + ctx.state.data = { + title: '广东省深圳市人民政府 - ' + cfg.title, + link: currentUrl, + item: items, + }; +};