diff --git a/src/aws/lambda/CrawlingService.ts b/src/aws/lambda/CrawlingService.ts index 79631ed..17a0dbd 100644 --- a/src/aws/lambda/CrawlingService.ts +++ b/src/aws/lambda/CrawlingService.ts @@ -130,23 +130,7 @@ export class CrawlingService { headless: true, executablePath: await chromiumBinary.executablePath(), args: [ - ...chromiumBinary.args, - '--no-sandbox', - '--disable-dev-shm-usage', - '--disable-gpu', - '--disable-features=VizDisplayCompositor', - '--disable-background-timer-throttling', - '--disable-backgrounding-occluded-windows', - '--disable-renderer-backgrounding', - '--disable-web-security', - '--single-process', - '--disable-setuid-sandbox', - '--no-zygote', - '--disable-accelerated-2d-canvas', - '--no-first-run', - '--no-default-browser-check', - '--disable-extensions', - '--disable-plugins', + ...chromiumBinary.args ], }); console.log('Browser initialized successfully'); diff --git a/src/entity/job/JobRegistry.ts b/src/entity/job/JobRegistry.ts index 0fa1ef5..d534f54 100644 --- a/src/entity/job/JobRegistry.ts +++ b/src/entity/job/JobRegistry.ts @@ -19,6 +19,7 @@ import { 서울시사회복지사협회 } from './implement/seoul/서울시사 import { 거모종합사회복지관 } from './implement/gyeonggi/siheung/거모종합사회복지관'; import { 고강종합사회복지관 } from './implement/gyeonggi/bucheon/고강종합사회복지관'; import { 고산종합사회복지관 } from './implement/gyeonggi/uijeongbu/고산종합사회복지관'; +import { 고양시원당종합사회복지관 } from './implement/gyeonggi/goyang/고양시원당종합사회복지관'; /** * 모든 크롤링 Job들을 등록하고 관리하는 Registry 클래스 @@ -45,6 +46,7 @@ export class JobRegistry { new 거모종합사회복지관(), new 고강종합사회복지관(), new 고산종합사회복지관(), + new 고양시원당종합사회복지관(), ]; static getAllJobs(): Job[] { diff --git "a/src/entity/job/implement/gyeonggi/goyang/\352\263\240\354\226\221\354\213\234\354\233\220\353\213\271\354\242\205\355\225\251\354\202\254\355\232\214\353\263\265\354\247\200\352\264\200.ts" "b/src/entity/job/implement/gyeonggi/goyang/\352\263\240\354\226\221\354\213\234\354\233\220\353\213\271\354\242\205\355\225\251\354\202\254\355\232\214\353\263\265\354\247\200\352\264\200.ts" new file mode 100644 index 0000000..2f99da7 --- /dev/null +++ "b/src/entity/job/implement/gyeonggi/goyang/\352\263\240\354\226\221\354\213\234\354\233\220\353\213\271\354\242\205\355\225\251\354\202\254\355\232\214\353\263\265\354\247\200\352\264\200.ts" @@ -0,0 +1,41 @@ +import { Locator } from "playwright-core"; +import { Category } from "../../../../Category"; +import { Optimize, Optimizer } from "../../../../Optimize"; +import { SimpleTemplateStep } from "../../../../step/SimpleTemplateStep"; +import { AbstractJob } from "../../../AbstractJob"; +import { parseKoreaDate } from "../../../../../utils/DateUtils"; + +export class 고양시원당종합사회복지관 extends AbstractJob { + constructor() { + super('고양시원당종합사회복지관', 'https://wdss.or.kr', [new 공지사항()]) + } + + registerOptimizer(optimizer: Optimizer) { + optimizer.register(Optimize.JS); + } +} + +class 공지사항 extends SimpleTemplateStep { + constructor() { + super( + 'https://wdss.or.kr/wondang/sub4_1.do', + '.board-01.board-list tbody tr:not(:first-child)', + Category.NOTICE + ); + } + + async select(card: Locator, baseUrl: string): Promise { + const titleElement = card.locator('.board-title a'); + const link = await titleElement.getAttribute('href'); + const title = (await titleElement.textContent()).trim(); + + const dateStr = (await card.locator('td:nth-child(4)').textContent()).trim(); + const createdAt = parseKoreaDate(dateStr, '-'); + + return { + title: title, + createdAt: createdAt, + link: link + } + } +}