43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import express from "express";
|
|
// import app from "./utils/app.js"
|
|
import { Crawl } from '../utils/crawl.js'
|
|
import Config from '../config/config.js'
|
|
|
|
const router = express.Router();
|
|
const crawlApp = new Crawl()
|
|
|
|
|
|
// http://192.168.31.101:3000/api/v1/info/list?id=6808
|
|
router.get('/list', async (req, res) => {
|
|
let { id } = req.query
|
|
const { browser, page } = await crawlApp.page(`${Config.baseUrl}/${id}.html`);
|
|
await page.waitForSelector('.article')
|
|
|
|
let result = {
|
|
title: await page.$eval('.article-header h1 a', el => el.innerText),
|
|
src_list: await page.$$eval('.article-content .theme-box p img', el => el.map(x => { return { title: x.getAttribute("alt"), alt: x.getAttribute("data-src")} })),
|
|
recommend: []
|
|
}
|
|
|
|
const recommendList = await page.$$('.zib-widget .swiper-wrapper .swiper-slide')
|
|
|
|
for (const handle of recommendList) {
|
|
result.recommend.push({
|
|
id: await handle.$eval('a', el => el.pathname.replace(/[^\d]/g, "")),
|
|
thumbnail: await handle.$eval('a img', el => el.getAttribute("data-src")),
|
|
title: await handle.$eval('a img+div', el => el.innerText),
|
|
time: await handle.$eval('a .px12 item', el => el.innerText),
|
|
view: await handle.$eval('a .px12 .pull-right', el => el.innerText),
|
|
})
|
|
}
|
|
|
|
res.json({
|
|
code: 300,
|
|
data: result
|
|
})
|
|
|
|
|
|
|
|
})
|
|
|
|
export default router |