WebScraping/scrapper/jjang0u.ts
2025-03-04 18:44:09 +09:00

44 lines
1.4 KiB
TypeScript

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;
}
}