feat(route): add 财新数据通专享资讯 (#7250)

This commit is contained in:
Ethan Shen
2021-08-12 16:55:48 +08:00
committed by GitHub
parent c43346b522
commit e571294da9
3 changed files with 55 additions and 4 deletions

View File

@@ -385,6 +385,10 @@ Category 列表:
</Route> </Route>
### 财新数据通
<Route author="nczitzk" example="/caixin/database" path="/caixin/database"/>
### 财新一线 ### 财新一线
<Route author="boypt" example="/caixin/yxnews" path="/caixin/yxnews"/> <Route author="boypt" example="/caixin/yxnews" path="/caixin/yxnews"/>

View File

@@ -394,12 +394,10 @@ router.get('/cctv-special/:id?', require('./routes/cctv/special'));
// 财新博客 // 财新博客
router.get('/caixin/blog/:column', require('./routes/caixin/blog')); router.get('/caixin/blog/:column', require('./routes/caixin/blog'));
// 财新
router.get('/caixin/:column/:category', require('./routes/caixin/category'));
// 财新首页
router.get('/caixin/article', require('./routes/caixin/article')); router.get('/caixin/article', require('./routes/caixin/article'));
// 财新一线 router.get('/caixin/database', require('./routes/caixin/database'));
router.get('/caixin/yxnews', require('./routes/caixin/yxnews')); router.get('/caixin/yxnews', require('./routes/caixin/yxnews'));
router.get('/caixin/:column/:category', require('./routes/caixin/category'));
// 草榴社区 // 草榴社区
router.get('/t66y/post/:tid', require('./routes/t66y/post')); router.get('/t66y/post/:tid', require('./routes/t66y/post'));

View File

@@ -0,0 +1,49 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const timezone = require('@/utils/timezone');
const { parseDate } = require('@/utils/parse-date');
module.exports = async (ctx) => {
const rootUrl = 'https://database.caixin.com';
const currentUrl = `${rootUrl}/news`;
const response = await got({
method: 'get',
url: currentUrl,
});
const $ = cheerio.load(response.data);
const list = $('h4 a')
.map((_, item) => {
item = $(item);
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.pubDate = timezone(parseDate(content('#pubtime_baidu').text()), +8);
item.description = `<p>${content('#subhead').html()}</p>`;
return item;
})
)
);
ctx.state.data = {
title: '财新数据通 - 专享资讯',
link: currentUrl,
item: items,
};
};