const cheerio = require('cheerio'); const axios = require('@/utils/axios'); module.exports = async (ctx) => { const link = 'https://www.digitaling.com'; const res = await axios.get(link); const $ = cheerio.load(res.data); // 文章列表 const list = $('#home_latest li h3') .find('a') .map((i, e) => $(e).attr('href')) .get(); const out = await Promise.all( list.map(async (itemUrl) => { const cache = await ctx.cache.get(itemUrl); // 判断缓存 if (cache) { return Promise.resolve(JSON.parse(cache)); } const res = await axios.get(itemUrl); const $ = cheerio.load(res.data); const item = { title: $('.project_title h2').text(), author: $('#avatar_by') .find('a') .text(), link: itemUrl, description: $('#article_con').html(), pubDate: new Date().toUTCString(), }; ctx.cache.set(itemUrl, JSON.stringify(item)); return Promise.resolve(item); }) ); ctx.state.data = { title: '数英网-最新文章', link: link, item: out, }; };