import { MyScrapper,BoardStruct } from "./myScrapper"; import * as cheerio from 'cheerio'; import dotenv from "dotenv"; export class Jjang0u extends MyScrapper { constructor(debug: boolean = false) { dotenv.config(); const config = { host: process.env.jjang0u_HOST ?? "", url: process.env.jjang0u_URL ?? "", rows: process.env.jjang0u_ROWS ?? "", title: process.env.jjang0u_TITLE ?? "", nickname: process.env.jjang0u_NICKNAME ?? "", content: process.env.jjang0u_CONTENT ?? "" } super(config, debug); } protected extractRow(row: BoardStruct, element: cheerio.Element, cnt: number): BoardStruct { const $ = cheerio.load(element); switch (cnt) { case 0: //rownum 필요없음 break; case 1: { //title const title = $(this.config.title); row.title = title.text(); //상세페이지 url 추출 row.detail_url = title.attr('href') ?? ''; break; } case 2: // nickname row.nickname = $(this.config.nickname).text(); break; case 3: // at_created (2025.03.03 -> 2025-03-03) row.at_created = $(element).text().replace(/\./g, "-"); break; case 4: // view (1,000 -> 1000) row.view = parseInt($(element).text().replace(/,/g, "")); break; case 5: // recommend 필요없음 break } return row; } }