pal-crawl 1.7.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +457 -0
- package/dist/config.d.ts +3 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/pal.d.ts +160 -11
- package/dist/pal.js +264 -11
- package/dist/pal.js.map +1 -1
- package/dist/pal.test.js +586 -16
- package/dist/pal.test.js.map +1 -1
- package/dist/parser.d.ts +56 -0
- package/dist/parser.js +187 -1
- package/dist/parser.js.map +1 -1
- package/package.json +3 -2
package/dist/pal.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { type ITableData, type IContentData, type ISearchResult } from './parser';
|
|
2
|
-
export type { IAttachment, ITableData, IContentData, ISearchResult, } from './parser';
|
|
1
|
+
import { type ITableData, type IContentData, type ISearchResult, type INsmBillItem, type INsmBillDetail, type INsmSearchResult } from './parser';
|
|
2
|
+
export type { IAttachment, ITableData, IContentData, ISearchResult, INsmAttachment, INsmBillItem, INsmBillDetail, INsmSearchResult, } from './parser';
|
|
3
|
+
export interface ScreenshotOptions {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
fullPage?: boolean;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
format?: 'png' | 'jpeg';
|
|
9
|
+
quality?: number;
|
|
10
|
+
}
|
|
3
11
|
export interface PalCrawlConfig {
|
|
4
12
|
userAgent?: string;
|
|
5
13
|
timeout?: number;
|
|
6
14
|
retryCount?: number;
|
|
7
15
|
customHeaders?: Record<string, string>;
|
|
16
|
+
screenshot?: ScreenshotOptions;
|
|
8
17
|
}
|
|
9
18
|
export interface ISearchQuery {
|
|
10
19
|
pageIndex?: number;
|
|
@@ -25,38 +34,178 @@ export interface IBulkOptions {
|
|
|
25
34
|
concurrency?: number;
|
|
26
35
|
maxPages?: number;
|
|
27
36
|
}
|
|
28
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Puppeteer 기반 스크린샷 기능을 공유하는 베이스 클래스.
|
|
39
|
+
* `PalCrawl`과 `NsmLmSts` 양쪽에서 상속합니다.
|
|
40
|
+
*/
|
|
41
|
+
export declare abstract class ScreenshotBase {
|
|
42
|
+
private browser;
|
|
43
|
+
protected screenshotConfig: ScreenshotOptions;
|
|
44
|
+
protected constructor(screenshot?: ScreenshotOptions);
|
|
45
|
+
/** Puppeteer 브라우저 인스턴스를 초기화합니다. */
|
|
46
|
+
initBrowser(): Promise<void>;
|
|
47
|
+
/** Puppeteer 브라우저 인스턴스를 종료하고 리소스를 해제합니다. */
|
|
48
|
+
closeBrowser(): Promise<void>;
|
|
49
|
+
/** 주어진 URL의 스크린샷을 Buffer로 반환합니다. */
|
|
50
|
+
takeScreenshot(urlStr: string): Promise<Buffer>;
|
|
51
|
+
/** 스크린샷 설정을 업데이트합니다. */
|
|
52
|
+
updateScreenshotConfig(config: Partial<ScreenshotOptions>): void;
|
|
53
|
+
}
|
|
54
|
+
export declare class PalCrawl extends ScreenshotBase {
|
|
29
55
|
private readonly httpClient;
|
|
30
56
|
private readonly parser;
|
|
31
57
|
constructor(config?: PalCrawlConfig);
|
|
58
|
+
/** 진행 중인 입법예고 목록 페이지 스크린샷을 반환합니다. */
|
|
59
|
+
getPalScreenshot(): Promise<Buffer>;
|
|
60
|
+
/** 진행 중인 입법예고의 특정 법률안 상세 페이지 스크린샷을 반환합니다. */
|
|
61
|
+
getContentScreenshot(id: string): Promise<Buffer>;
|
|
62
|
+
/** 완료된 입법예고 목록 페이지 스크린샷을 반환합니다. */
|
|
63
|
+
getDoneScreenshot(): Promise<Buffer>;
|
|
64
|
+
/** 완료된 입법예고의 특정 법률안 상세 페이지 스크린샷을 반환합니다. */
|
|
65
|
+
getDoneContentScreenshot(id: string): Promise<Buffer>;
|
|
32
66
|
private buildListUrl;
|
|
67
|
+
/** 진행 중인 입법예고 목록 페이지의 HTML을 반환합니다. */
|
|
33
68
|
getPalHTML(): Promise<string>;
|
|
69
|
+
/** HTML에서 법률안 목록을 파싱하여 반환합니다. */
|
|
34
70
|
parseTable(html: string): ITableData[];
|
|
71
|
+
/** HTML에서 법률안 상세 내용을 파싱하여 반환합니다. */
|
|
35
72
|
parseContent(html: string): IContentData;
|
|
73
|
+
/** 진행 중인 입법예고 목록의 첫 페이지를 반환합니다. */
|
|
36
74
|
get(): Promise<ITableData[]>;
|
|
75
|
+
/** ID로 진행 중인 입법예고의 법률안 상세 페이지 HTML을 반환합니다. */
|
|
37
76
|
getContentHTML(id: string): Promise<string>;
|
|
77
|
+
/** ID로 진행 중인 입법예고의 법률안 상세 정보를 조회합니다. */
|
|
38
78
|
getContent(id: string): Promise<IContentData>;
|
|
79
|
+
/** 완료된 입법예고 목록 페이지의 HTML을 반환합니다. */
|
|
39
80
|
getDoneHTML(): Promise<string>;
|
|
81
|
+
/** 완료된 입법예고 목록의 첫 페이지를 반환합니다. */
|
|
40
82
|
getDone(): Promise<ITableData[]>;
|
|
83
|
+
/** ID로 완료된 입법예고의 법률안 상세 페이지 HTML을 반환합니다. */
|
|
41
84
|
getDoneContentHTML(id: string): Promise<string>;
|
|
85
|
+
/** ID로 완료된 입법예고의 법률안 상세 정보를 조회합니다. */
|
|
42
86
|
getDoneContent(id: string): Promise<IContentData>;
|
|
43
|
-
/**
|
|
87
|
+
/** 진행 중인 입법예고를 검색합니다. 필터를 지정하지 않으면 1페이지를 반환합니다. */
|
|
44
88
|
search(query?: ISearchQuery): Promise<ISearchResult>;
|
|
45
|
-
/**
|
|
89
|
+
/** 완료된 입법예고를 검색합니다. 필터를 지정하지 않으면 1페이지를 반환합니다. */
|
|
46
90
|
searchDone(query?: ISearchQuery): Promise<ISearchResult>;
|
|
47
|
-
/**
|
|
91
|
+
/** 진행 중인 입법예고의 특정 페이지 목록을 반환합니다. */
|
|
48
92
|
getPage(pageIndex: number, pageUnit?: number): Promise<ITableData[]>;
|
|
49
|
-
/**
|
|
93
|
+
/** 완료된 입법예고의 특정 페이지 목록을 반환합니다. */
|
|
50
94
|
getDonePage(pageIndex: number, pageUnit?: number): Promise<ITableData[]>;
|
|
51
95
|
private _getAllPagesImpl;
|
|
52
96
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
97
|
+
* 진행 중인 입법예고 전체 페이지를 순차적으로 yield하는 async generator.
|
|
98
|
+
* `IBulkOptions`로 딜레이·동시성·최대 페이지를 조절할 수 있습니다.
|
|
55
99
|
*/
|
|
56
100
|
getAllPages(query?: Omit<ISearchQuery, 'pageIndex'>, options?: IBulkOptions): AsyncGenerator<ISearchResult>;
|
|
57
101
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
102
|
+
* 완료된 입법예고 전체 페이지를 순차적으로 yield하는 async generator.
|
|
103
|
+
* `IBulkOptions`로 딜레이·동시성·최대 페이지를 조절할 수 있습니다.
|
|
60
104
|
*/
|
|
61
105
|
getAllDonePages(query?: Omit<ISearchQuery, 'pageIndex'>, options?: IBulkOptions): AsyncGenerator<ISearchResult>;
|
|
62
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* 국회현황 코드
|
|
109
|
+
* - 900101: 발의 (위원회 회부 이전 대기 상태 포함)
|
|
110
|
+
* - 900102: 위원회 회부
|
|
111
|
+
* - 900103: 위원회 상정
|
|
112
|
+
* - 900104: 위원회 법안소위
|
|
113
|
+
* - 900105: 위원회 전체회의
|
|
114
|
+
* - 900106: 법사위 심사
|
|
115
|
+
* - 900107: 본회의 심의
|
|
116
|
+
* - 900108: 정부이송
|
|
117
|
+
* - 900109: 공포
|
|
118
|
+
*/
|
|
119
|
+
export type NsmProgressStatus = '900101' | '900102' | '900103' | '900104' | '900105' | '900106' | '900107' | '900108' | '900109';
|
|
120
|
+
/**
|
|
121
|
+
* 발의구분 코드
|
|
122
|
+
* - 900201: 정부
|
|
123
|
+
* - 900202: 의원
|
|
124
|
+
* - 900203: 위원장
|
|
125
|
+
*/
|
|
126
|
+
export type NsmProposerType = '900201' | '900202' | '900203';
|
|
127
|
+
/**
|
|
128
|
+
* 의결현황 코드
|
|
129
|
+
* - 902911: 수정가결
|
|
130
|
+
* - 902912: 원안가결
|
|
131
|
+
* - 902913: 부결
|
|
132
|
+
* - 902914: 대안반영폐기
|
|
133
|
+
* - 902915: 폐기
|
|
134
|
+
* - 902916: 임기만료폐기
|
|
135
|
+
* - 902917: 철회
|
|
136
|
+
*/
|
|
137
|
+
export type NsmResolutionStatus = '902911' | '902912' | '902913' | '902914' | '902915' | '902916' | '902917';
|
|
138
|
+
export interface INsmSearchQuery {
|
|
139
|
+
pageIndex?: number;
|
|
140
|
+
/** 페이지당 건수 (10 | 20 | 50 | 100) */
|
|
141
|
+
pageSize?: number;
|
|
142
|
+
/** 제안대수 시작 (예: "22" → 제22대) */
|
|
143
|
+
sugCd?: string;
|
|
144
|
+
/** 제안대수 끝 */
|
|
145
|
+
endSugCd?: string;
|
|
146
|
+
/** 발의구분 */
|
|
147
|
+
sgtCls?: NsmProposerType;
|
|
148
|
+
/** 소관부처 코드 */
|
|
149
|
+
cptOfiOrgCd?: string;
|
|
150
|
+
/** 국회현황 */
|
|
151
|
+
rslRsltNmL?: NsmProgressStatus;
|
|
152
|
+
/** 의결현황 */
|
|
153
|
+
rslRsltNmR?: NsmResolutionStatus;
|
|
154
|
+
/** 상임위 (예: "법제사법위원회") */
|
|
155
|
+
scCptPpostCmt?: string;
|
|
156
|
+
/** 제안일자 시작 (YYYY-MM-DD) */
|
|
157
|
+
searchStDtNew?: string;
|
|
158
|
+
/** 제안일자 종료 (YYYY-MM-DD) */
|
|
159
|
+
searchEdDtNew?: string;
|
|
160
|
+
/** 제안자 */
|
|
161
|
+
scPpsUsr?: string;
|
|
162
|
+
/** 규제 신설·강화 해당 여지 법안만 조회 */
|
|
163
|
+
issLawitmYn?: 'Y';
|
|
164
|
+
/** 추진일자 시작 (YYYY-MM-DD) */
|
|
165
|
+
stDt?: string;
|
|
166
|
+
/** 추진일자 종료 (YYYY-MM-DD) */
|
|
167
|
+
edDt?: string;
|
|
168
|
+
/** 의안번호 또는 의안명 */
|
|
169
|
+
scBlNmSct?: string;
|
|
170
|
+
sortCol?: string;
|
|
171
|
+
sortOrder?: 'DESC' | 'ASC';
|
|
172
|
+
}
|
|
173
|
+
export declare class NsmLmSts extends ScreenshotBase {
|
|
174
|
+
private readonly httpClient;
|
|
175
|
+
private readonly parser;
|
|
176
|
+
constructor(config?: PalCrawlConfig);
|
|
177
|
+
private buildListUrl;
|
|
178
|
+
/** 목록 페이지 HTML 반환 */
|
|
179
|
+
getListHTML(query?: INsmSearchQuery): Promise<string>;
|
|
180
|
+
/** HTML에서 법안 목록 검색 결과를 파싱하여 반환합니다. */
|
|
181
|
+
parseList(html: string): INsmSearchResult;
|
|
182
|
+
/** HTML에서 법안 상세 정보를 파싱하여 반환합니다. */
|
|
183
|
+
parseDetail(html: string): INsmBillDetail;
|
|
184
|
+
/** 목록 검색 (필터 지원) */
|
|
185
|
+
search(query?: INsmSearchQuery): Promise<INsmSearchResult>;
|
|
186
|
+
/**
|
|
187
|
+
* 위원회 회부 이전 발의 상태인 법안만 조회 (rslRsltNmL=900101 고정).
|
|
188
|
+
* 소관부처·제안대수·날짜 등 나머지 필터는 그대로 적용됩니다.
|
|
189
|
+
*/
|
|
190
|
+
searchPending(query?: Omit<INsmSearchQuery, 'rslRsltNmL'>): Promise<INsmSearchResult>;
|
|
191
|
+
/** 상세 페이지 HTML 반환 */
|
|
192
|
+
getDetailHTML(billNo: string): Promise<string>;
|
|
193
|
+
/** 법안 상세 정보 조회 */
|
|
194
|
+
getDetail(billNo: string): Promise<INsmBillDetail>;
|
|
195
|
+
/** 특정 페이지의 법안 목록 조회 */
|
|
196
|
+
getPage(pageIndex: number, query?: Omit<INsmSearchQuery, 'pageIndex'>): Promise<INsmBillItem[]>;
|
|
197
|
+
private _getAllPagesImpl;
|
|
198
|
+
/**
|
|
199
|
+
* 전체 페이지를 순차적으로 yield하는 async generator.
|
|
200
|
+
* `IBulkOptions`로 딜레이·동시성·최대 페이지를 조절할 수 있습니다.
|
|
201
|
+
*/
|
|
202
|
+
getAllPages(query?: Omit<INsmSearchQuery, 'pageIndex'>, options?: IBulkOptions): AsyncGenerator<INsmSearchResult>;
|
|
203
|
+
/**
|
|
204
|
+
* 발의 상태(위원회 회부 전) 법안 전체를 페이지 단위로 yield합니다.
|
|
205
|
+
*/
|
|
206
|
+
getAllPendingPages(query?: Omit<INsmSearchQuery, 'pageIndex' | 'rslRsltNmL'>, options?: IBulkOptions): AsyncGenerator<INsmSearchResult>;
|
|
207
|
+
/** 국회입법현황 목록 페이지 스크린샷 */
|
|
208
|
+
getNsmListScreenshot(query?: Omit<INsmSearchQuery, 'pageIndex'>): Promise<Buffer>;
|
|
209
|
+
/** 법안 상세 페이지 스크린샷 */
|
|
210
|
+
getDetailScreenshot(billNo: string): Promise<Buffer>;
|
|
211
|
+
}
|
package/dist/pal.js
CHANGED
|
@@ -1,12 +1,87 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PalCrawl = void 0;
|
|
6
|
+
exports.NsmLmSts = exports.PalCrawl = exports.ScreenshotBase = void 0;
|
|
4
7
|
const url_1 = require("url");
|
|
8
|
+
const puppeteer_1 = __importDefault(require("puppeteer"));
|
|
5
9
|
const config_1 = require("./config");
|
|
6
10
|
const http_client_1 = require("./http-client");
|
|
7
11
|
const parser_1 = require("./parser");
|
|
8
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Puppeteer 기반 스크린샷 기능을 공유하는 베이스 클래스.
|
|
14
|
+
* `PalCrawl`과 `NsmLmSts` 양쪽에서 상속합니다.
|
|
15
|
+
*/
|
|
16
|
+
class ScreenshotBase {
|
|
17
|
+
constructor(screenshot) {
|
|
18
|
+
this.browser = null;
|
|
19
|
+
this.screenshotConfig = {
|
|
20
|
+
enabled: screenshot?.enabled ?? false,
|
|
21
|
+
fullPage: screenshot?.fullPage ?? true,
|
|
22
|
+
width: screenshot?.width ?? 1920,
|
|
23
|
+
height: screenshot?.height ?? 1080,
|
|
24
|
+
format: screenshot?.format ?? 'png',
|
|
25
|
+
quality: screenshot?.quality ?? 80,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Puppeteer 브라우저 인스턴스를 초기화합니다. */
|
|
29
|
+
async initBrowser() {
|
|
30
|
+
if (!this.browser) {
|
|
31
|
+
this.browser = await puppeteer_1.default.launch({
|
|
32
|
+
headless: true,
|
|
33
|
+
args: ['--no-sandbox', '--disable-setuid-sandbox'],
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Puppeteer 브라우저 인스턴스를 종료하고 리소스를 해제합니다. */
|
|
38
|
+
async closeBrowser() {
|
|
39
|
+
if (this.browser) {
|
|
40
|
+
await this.browser.close();
|
|
41
|
+
this.browser = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** 주어진 URL의 스크린샷을 Buffer로 반환합니다. */
|
|
45
|
+
async takeScreenshot(urlStr) {
|
|
46
|
+
if (!this.screenshotConfig.enabled) {
|
|
47
|
+
throw new Error('Screenshot feature is not enabled. Enable it in the config.');
|
|
48
|
+
}
|
|
49
|
+
await this.initBrowser();
|
|
50
|
+
if (!this.browser) {
|
|
51
|
+
throw new Error('Failed to initialize browser');
|
|
52
|
+
}
|
|
53
|
+
const page = await this.browser.newPage();
|
|
54
|
+
try {
|
|
55
|
+
await page.setViewport({
|
|
56
|
+
width: this.screenshotConfig.width ?? 1920,
|
|
57
|
+
height: this.screenshotConfig.height ?? 1080,
|
|
58
|
+
});
|
|
59
|
+
await page.goto(urlStr, { waitUntil: 'networkidle0', timeout: 30000 });
|
|
60
|
+
const screenshotBuffer = await page.screenshot({
|
|
61
|
+
fullPage: this.screenshotConfig.fullPage ?? true,
|
|
62
|
+
type: this.screenshotConfig.format,
|
|
63
|
+
quality: this.screenshotConfig.format === 'jpeg'
|
|
64
|
+
? (this.screenshotConfig.quality ?? 80)
|
|
65
|
+
: undefined,
|
|
66
|
+
});
|
|
67
|
+
return screenshotBuffer;
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
await page.close();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** 스크린샷 설정을 업데이트합니다. */
|
|
74
|
+
updateScreenshotConfig(config) {
|
|
75
|
+
this.screenshotConfig = {
|
|
76
|
+
...this.screenshotConfig,
|
|
77
|
+
...config,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ScreenshotBase = ScreenshotBase;
|
|
82
|
+
class PalCrawl extends ScreenshotBase {
|
|
9
83
|
constructor(config) {
|
|
84
|
+
super(config?.screenshot);
|
|
10
85
|
this.httpClient = new http_client_1.HttpClient({
|
|
11
86
|
userAgent: config?.userAgent ?? config_1.Config.UserAgent,
|
|
12
87
|
timeout: config?.timeout ?? 10000,
|
|
@@ -15,6 +90,38 @@ class PalCrawl {
|
|
|
15
90
|
});
|
|
16
91
|
this.parser = new parser_1.PalParser();
|
|
17
92
|
}
|
|
93
|
+
/** 진행 중인 입법예고 목록 페이지 스크린샷을 반환합니다. */
|
|
94
|
+
async getPalScreenshot() {
|
|
95
|
+
const url = new url_1.URL(config_1.Config.LIST_URL, config_1.Config.DOMAIN);
|
|
96
|
+
return this.takeScreenshot(url.toString());
|
|
97
|
+
}
|
|
98
|
+
/** 진행 중인 입법예고의 특정 법률안 상세 페이지 스크린샷을 반환합니다. */
|
|
99
|
+
async getContentScreenshot(id) {
|
|
100
|
+
const normalizedId = id.trim();
|
|
101
|
+
if (!normalizedId) {
|
|
102
|
+
throw new Error('id is required');
|
|
103
|
+
}
|
|
104
|
+
const url = new url_1.URL(config_1.Config.CONTENT_URL, config_1.Config.DOMAIN);
|
|
105
|
+
url.searchParams.set('lgsltPaid', normalizedId);
|
|
106
|
+
url.searchParams.set('lgsltPaId', normalizedId);
|
|
107
|
+
return this.takeScreenshot(url.toString());
|
|
108
|
+
}
|
|
109
|
+
/** 완료된 입법예고 목록 페이지 스크린샷을 반환합니다. */
|
|
110
|
+
async getDoneScreenshot() {
|
|
111
|
+
const url = new url_1.URL(config_1.Config.DONE_LIST_URL, config_1.Config.DOMAIN);
|
|
112
|
+
return this.takeScreenshot(url.toString());
|
|
113
|
+
}
|
|
114
|
+
/** 완료된 입법예고의 특정 법률안 상세 페이지 스크린샷을 반환합니다. */
|
|
115
|
+
async getDoneContentScreenshot(id) {
|
|
116
|
+
const normalizedId = id.trim();
|
|
117
|
+
if (!normalizedId) {
|
|
118
|
+
throw new Error('id is required');
|
|
119
|
+
}
|
|
120
|
+
const url = new url_1.URL(config_1.Config.DONE_CONTENT_URL, config_1.Config.DOMAIN);
|
|
121
|
+
url.searchParams.set('lgsltPaid', normalizedId);
|
|
122
|
+
url.searchParams.set('lgsltPaId', normalizedId);
|
|
123
|
+
return this.takeScreenshot(url.toString());
|
|
124
|
+
}
|
|
18
125
|
buildListUrl(base, query) {
|
|
19
126
|
const url = new url_1.URL(base, config_1.Config.DOMAIN);
|
|
20
127
|
const entries = [
|
|
@@ -38,20 +145,25 @@ class PalCrawl {
|
|
|
38
145
|
}
|
|
39
146
|
return url;
|
|
40
147
|
}
|
|
148
|
+
/** 진행 중인 입법예고 목록 페이지의 HTML을 반환합니다. */
|
|
41
149
|
async getPalHTML() {
|
|
42
150
|
const url = new url_1.URL(config_1.Config.LIST_URL, config_1.Config.DOMAIN);
|
|
43
151
|
return this.httpClient.get(url);
|
|
44
152
|
}
|
|
153
|
+
/** HTML에서 법률안 목록을 파싱하여 반환합니다. */
|
|
45
154
|
parseTable(html) {
|
|
46
155
|
return this.parser.parseTable(html);
|
|
47
156
|
}
|
|
157
|
+
/** HTML에서 법률안 상세 내용을 파싱하여 반환합니다. */
|
|
48
158
|
parseContent(html) {
|
|
49
159
|
return this.parser.parseContent(html);
|
|
50
160
|
}
|
|
161
|
+
/** 진행 중인 입법예고 목록의 첫 페이지를 반환합니다. */
|
|
51
162
|
async get() {
|
|
52
163
|
const html = await this.getPalHTML();
|
|
53
164
|
return this.parser.parseTable(html);
|
|
54
165
|
}
|
|
166
|
+
/** ID로 진행 중인 입법예고의 법률안 상세 페이지 HTML을 반환합니다. */
|
|
55
167
|
async getContentHTML(id) {
|
|
56
168
|
const normalizedId = id.trim();
|
|
57
169
|
if (!normalizedId) {
|
|
@@ -59,22 +171,26 @@ class PalCrawl {
|
|
|
59
171
|
}
|
|
60
172
|
const url = new url_1.URL(config_1.Config.CONTENT_URL, config_1.Config.DOMAIN);
|
|
61
173
|
url.searchParams.set('lgsltPaid', normalizedId);
|
|
62
|
-
//
|
|
174
|
+
// 사이트에서 현재 사용 중인 쿼리 키 호환성 유지
|
|
63
175
|
url.searchParams.set('lgsltPaId', normalizedId);
|
|
64
176
|
return this.httpClient.get(url);
|
|
65
177
|
}
|
|
178
|
+
/** ID로 진행 중인 입법예고의 법률안 상세 정보를 조회합니다. */
|
|
66
179
|
async getContent(id) {
|
|
67
180
|
const html = await this.getContentHTML(id);
|
|
68
181
|
return this.parser.parseContent(html);
|
|
69
182
|
}
|
|
183
|
+
/** 완료된 입법예고 목록 페이지의 HTML을 반환합니다. */
|
|
70
184
|
async getDoneHTML() {
|
|
71
185
|
const url = new url_1.URL(config_1.Config.DONE_LIST_URL, config_1.Config.DOMAIN);
|
|
72
186
|
return this.httpClient.get(url);
|
|
73
187
|
}
|
|
188
|
+
/** 완료된 입법예고 목록의 첫 페이지를 반환합니다. */
|
|
74
189
|
async getDone() {
|
|
75
190
|
const html = await this.getDoneHTML();
|
|
76
191
|
return this.parser.parseTable(html);
|
|
77
192
|
}
|
|
193
|
+
/** ID로 완료된 입법예고의 법률안 상세 페이지 HTML을 반환합니다. */
|
|
78
194
|
async getDoneContentHTML(id) {
|
|
79
195
|
const normalizedId = id.trim();
|
|
80
196
|
if (!normalizedId) {
|
|
@@ -85,18 +201,19 @@ class PalCrawl {
|
|
|
85
201
|
url.searchParams.set('lgsltPaId', normalizedId);
|
|
86
202
|
return this.httpClient.get(url);
|
|
87
203
|
}
|
|
204
|
+
/** ID로 완료된 입법예고의 법률안 상세 정보를 조회합니다. */
|
|
88
205
|
async getDoneContent(id) {
|
|
89
206
|
const html = await this.getDoneContentHTML(id);
|
|
90
207
|
return this.parser.parseContent(html);
|
|
91
208
|
}
|
|
92
209
|
// ── Search / Filter ──────────────────────────────────────────────────────────
|
|
93
|
-
/**
|
|
210
|
+
/** 진행 중인 입법예고를 검색합니다. 필터를 지정하지 않으면 1페이지를 반환합니다. */
|
|
94
211
|
async search(query = {}) {
|
|
95
212
|
const url = this.buildListUrl(config_1.Config.LIST_URL, { pageIndex: 1, ...query });
|
|
96
213
|
const html = await this.httpClient.get(url);
|
|
97
214
|
return this.parser.parseSearchResult(html);
|
|
98
215
|
}
|
|
99
|
-
/**
|
|
216
|
+
/** 완료된 입법예고를 검색합니다. 필터를 지정하지 않으면 1페이지를 반환합니다. */
|
|
100
217
|
async searchDone(query = {}) {
|
|
101
218
|
const url = this.buildListUrl(config_1.Config.DONE_LIST_URL, {
|
|
102
219
|
pageIndex: 1,
|
|
@@ -106,12 +223,12 @@ class PalCrawl {
|
|
|
106
223
|
return this.parser.parseSearchResult(html);
|
|
107
224
|
}
|
|
108
225
|
// ── Explicit page access ─────────────────────────────────────────────────────
|
|
109
|
-
/**
|
|
226
|
+
/** 진행 중인 입법예고의 특정 페이지 목록을 반환합니다. */
|
|
110
227
|
async getPage(pageIndex, pageUnit) {
|
|
111
228
|
const result = await this.search({ pageIndex, pageUnit });
|
|
112
229
|
return result.items;
|
|
113
230
|
}
|
|
114
|
-
/**
|
|
231
|
+
/** 완료된 입법예고의 특정 페이지 목록을 반환합니다. */
|
|
115
232
|
async getDonePage(pageIndex, pageUnit) {
|
|
116
233
|
const result = await this.searchDone({ pageIndex, pageUnit });
|
|
117
234
|
return result.items;
|
|
@@ -140,19 +257,155 @@ class PalCrawl {
|
|
|
140
257
|
}
|
|
141
258
|
}
|
|
142
259
|
/**
|
|
143
|
-
*
|
|
144
|
-
*
|
|
260
|
+
* 진행 중인 입법예고 전체 페이지를 순차적으로 yield하는 async generator.
|
|
261
|
+
* `IBulkOptions`로 딜레이·동시성·최대 페이지를 조절할 수 있습니다.
|
|
145
262
|
*/
|
|
146
263
|
getAllPages(query, options) {
|
|
147
264
|
return this._getAllPagesImpl((q) => this.search(q), query ?? {}, options ?? {});
|
|
148
265
|
}
|
|
149
266
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
267
|
+
* 완료된 입법예고 전체 페이지를 순차적으로 yield하는 async generator.
|
|
268
|
+
* `IBulkOptions`로 딜레이·동시성·최대 페이지를 조절할 수 있습니다.
|
|
152
269
|
*/
|
|
153
270
|
getAllDonePages(query, options) {
|
|
154
271
|
return this._getAllPagesImpl((q) => this.searchDone(q), query ?? {}, options ?? {});
|
|
155
272
|
}
|
|
156
273
|
}
|
|
157
274
|
exports.PalCrawl = PalCrawl;
|
|
275
|
+
class NsmLmSts extends ScreenshotBase {
|
|
276
|
+
constructor(config) {
|
|
277
|
+
super(config?.screenshot);
|
|
278
|
+
this.httpClient = new http_client_1.HttpClient({
|
|
279
|
+
userAgent: config?.userAgent ?? config_1.Config.UserAgent,
|
|
280
|
+
timeout: config?.timeout ?? 10000,
|
|
281
|
+
retryCount: config?.retryCount ?? 3,
|
|
282
|
+
customHeaders: config?.customHeaders ?? {},
|
|
283
|
+
});
|
|
284
|
+
this.parser = new parser_1.NsmLmStsParser();
|
|
285
|
+
}
|
|
286
|
+
buildListUrl(query) {
|
|
287
|
+
const url = new url_1.URL(config_1.Config.NSM_LIST_URL, config_1.Config.NSM_DOMAIN);
|
|
288
|
+
const entries = [
|
|
289
|
+
['pageIndex', query.pageIndex],
|
|
290
|
+
['pageSize', query.pageSize],
|
|
291
|
+
['sugCd', query.sugCd],
|
|
292
|
+
['endSugCd', query.endSugCd],
|
|
293
|
+
['sgtCls', query.sgtCls],
|
|
294
|
+
['cptOfiOrgCd', query.cptOfiOrgCd],
|
|
295
|
+
['rslRsltNmL', query.rslRsltNmL],
|
|
296
|
+
['rslRsltNmR', query.rslRsltNmR],
|
|
297
|
+
['scCptPpostCmt', query.scCptPpostCmt],
|
|
298
|
+
['searchStDtNew', query.searchStDtNew],
|
|
299
|
+
['searchEdDtNew', query.searchEdDtNew],
|
|
300
|
+
['scPpsUsr', query.scPpsUsr],
|
|
301
|
+
['issLawitmYn', query.issLawitmYn],
|
|
302
|
+
['stDt', query.stDt],
|
|
303
|
+
['edDt', query.edDt],
|
|
304
|
+
['sortCol', query.sortCol],
|
|
305
|
+
['sortOrder', query.sortOrder],
|
|
306
|
+
];
|
|
307
|
+
if (query.scBlNmSct) {
|
|
308
|
+
url.searchParams.set('scBlNm', 'scBlNm_blNm');
|
|
309
|
+
entries.push(['scBlNmSct', query.scBlNmSct]);
|
|
310
|
+
}
|
|
311
|
+
for (const [key, value] of entries) {
|
|
312
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
313
|
+
url.searchParams.set(key, String(value));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
return url;
|
|
317
|
+
}
|
|
318
|
+
/** 목록 페이지 HTML 반환 */
|
|
319
|
+
async getListHTML(query = {}) {
|
|
320
|
+
const url = this.buildListUrl({ pageIndex: 1, ...query });
|
|
321
|
+
return this.httpClient.get(url);
|
|
322
|
+
}
|
|
323
|
+
/** HTML에서 법안 목록 검색 결과를 파싱하여 반환합니다. */
|
|
324
|
+
parseList(html) {
|
|
325
|
+
return this.parser.parseList(html);
|
|
326
|
+
}
|
|
327
|
+
/** HTML에서 법안 상세 정보를 파싱하여 반환합니다. */
|
|
328
|
+
parseDetail(html) {
|
|
329
|
+
return this.parser.parseDetail(html);
|
|
330
|
+
}
|
|
331
|
+
/** 목록 검색 (필터 지원) */
|
|
332
|
+
async search(query = {}) {
|
|
333
|
+
const html = await this.getListHTML(query);
|
|
334
|
+
return this.parser.parseList(html);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* 위원회 회부 이전 발의 상태인 법안만 조회 (rslRsltNmL=900101 고정).
|
|
338
|
+
* 소관부처·제안대수·날짜 등 나머지 필터는 그대로 적용됩니다.
|
|
339
|
+
*/
|
|
340
|
+
async searchPending(query = {}) {
|
|
341
|
+
return this.search({ ...query, rslRsltNmL: '900101' });
|
|
342
|
+
}
|
|
343
|
+
/** 상세 페이지 HTML 반환 */
|
|
344
|
+
async getDetailHTML(billNo) {
|
|
345
|
+
const normalized = billNo.trim();
|
|
346
|
+
if (!normalized)
|
|
347
|
+
throw new Error('billNo is required');
|
|
348
|
+
const url = new url_1.URL(`${config_1.Config.NSM_LIST_URL}/${normalized}/detailRP`, config_1.Config.NSM_DOMAIN);
|
|
349
|
+
return this.httpClient.get(url);
|
|
350
|
+
}
|
|
351
|
+
/** 법안 상세 정보 조회 */
|
|
352
|
+
async getDetail(billNo) {
|
|
353
|
+
const html = await this.getDetailHTML(billNo);
|
|
354
|
+
return this.parser.parseDetail(html);
|
|
355
|
+
}
|
|
356
|
+
/** 특정 페이지의 법안 목록 조회 */
|
|
357
|
+
async getPage(pageIndex, query = {}) {
|
|
358
|
+
const result = await this.search({ ...query, pageIndex });
|
|
359
|
+
return result.items;
|
|
360
|
+
}
|
|
361
|
+
async *_getAllPagesImpl(query, options) {
|
|
362
|
+
const delayMs = options.delayMs ?? 500;
|
|
363
|
+
const concurrency = Math.max(1, options.concurrency ?? 1);
|
|
364
|
+
const first = await this.search({ ...query, pageIndex: 1 });
|
|
365
|
+
yield first;
|
|
366
|
+
if (first.totalPages <= 1 || first.items.length === 0)
|
|
367
|
+
return;
|
|
368
|
+
const maxPages = Math.min(first.totalPages, options.maxPages ?? first.totalPages);
|
|
369
|
+
for (let start = 2; start <= maxPages; start += concurrency) {
|
|
370
|
+
if (delayMs > 0) {
|
|
371
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
372
|
+
}
|
|
373
|
+
const end = Math.min(start + concurrency - 1, maxPages);
|
|
374
|
+
const pageNums = Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
375
|
+
const results = await Promise.all(pageNums.map((p) => this.search({ ...query, pageIndex: p })));
|
|
376
|
+
for (const result of results) {
|
|
377
|
+
yield result;
|
|
378
|
+
if (result.items.length === 0)
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* 전체 페이지를 순차적으로 yield하는 async generator.
|
|
385
|
+
* `IBulkOptions`로 딜레이·동시성·최대 페이지를 조절할 수 있습니다.
|
|
386
|
+
*/
|
|
387
|
+
getAllPages(query, options) {
|
|
388
|
+
return this._getAllPagesImpl(query ?? {}, options ?? {});
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* 발의 상태(위원회 회부 전) 법안 전체를 페이지 단위로 yield합니다.
|
|
392
|
+
*/
|
|
393
|
+
getAllPendingPages(query, options) {
|
|
394
|
+
return this._getAllPagesImpl({ ...query, rslRsltNmL: '900101' }, options ?? {});
|
|
395
|
+
}
|
|
396
|
+
/** 국회입법현황 목록 페이지 스크린샷 */
|
|
397
|
+
async getNsmListScreenshot(query = {}) {
|
|
398
|
+
const url = this.buildListUrl({ pageIndex: 1, ...query });
|
|
399
|
+
return this.takeScreenshot(url.toString());
|
|
400
|
+
}
|
|
401
|
+
/** 법안 상세 페이지 스크린샷 */
|
|
402
|
+
async getDetailScreenshot(billNo) {
|
|
403
|
+
const normalized = billNo.trim();
|
|
404
|
+
if (!normalized)
|
|
405
|
+
throw new Error('billNo is required');
|
|
406
|
+
const url = new url_1.URL(`${config_1.Config.NSM_LIST_URL}/${normalized}/detailRP`, config_1.Config.NSM_DOMAIN);
|
|
407
|
+
return this.takeScreenshot(url.toString());
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
exports.NsmLmSts = NsmLmSts;
|
|
158
411
|
//# sourceMappingURL=pal.js.map
|
package/dist/pal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":"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"}
|