44 lines
1.4 KiB
TypeScript
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;
|
|
}
|
|
} |