pal-crawl 1.0.7 → 1.1.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 +48 -8
- package/dist/pal.js +24 -20
- package/dist/pal.js.map +1 -1
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -3,24 +3,45 @@
|
|
|
3
3
|
[](#license)
|
|
4
4
|
[](https://github.com/vientorepublic/pal-crawl)
|
|
5
5
|
[](https://github.com/vientorepublic/pal-crawl)
|
|
6
|
+
[](https://badge.fury.io/js/pal-crawl)
|
|
7
|
+
[](https://github.com/vientorepublic/pal-crawl/actions/workflows/build.yml)
|
|
8
|
+
[](https://github.com/vientorepublic/pal-crawl/actions/workflows/test.yml)
|
|
6
9
|
|
|
7
10
|
<img width="1312" alt="Screenshot" src="https://github.com/user-attachments/assets/2e243915-6d9c-470b-9510-27ef5546ab61" />
|
|
8
11
|
|
|
9
12
|
국회입법예고(pal.assembly.go.kr)의 진행 중인 입법 예고 크롤러
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
---
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
## Table of Contents
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
- [Introduction](#introduction)
|
|
19
|
+
- [Installation](#installation)
|
|
20
|
+
- [Base Types](#base-types)
|
|
21
|
+
- [Methods](#methods)
|
|
22
|
+
- [get](#get)
|
|
23
|
+
- [License](#license)
|
|
17
24
|
|
|
18
|
-
|
|
19
|
-
const table = await palCrawl.get();
|
|
25
|
+
---
|
|
20
26
|
|
|
21
|
-
|
|
27
|
+
## Introduction
|
|
28
|
+
|
|
29
|
+
국회입법예고(pal.assembly.go.kr) 사이트에서 진행 중인 입법 예고 데이터를 크롤링하는 도구입니다. 입법 예고의 주요 정보를 손쉽게 가져올 수 있습니다.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm install pal-crawl
|
|
22
37
|
```
|
|
23
38
|
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Base Types
|
|
42
|
+
|
|
43
|
+
`ITableData`는 크롤링된 입법 예고 데이터를 나타내는 인터페이스입니다.
|
|
44
|
+
|
|
24
45
|
```typescript
|
|
25
46
|
interface ITableData {
|
|
26
47
|
num: number; // 의안번호
|
|
@@ -32,6 +53,25 @@ interface ITableData {
|
|
|
32
53
|
}
|
|
33
54
|
```
|
|
34
55
|
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Methods
|
|
59
|
+
|
|
60
|
+
### get
|
|
61
|
+
|
|
62
|
+
`get` 메서드는 진행 중인 입법 예고 데이터를 가져옵니다.
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
import { PalCrawl } from 'pal-crawl';
|
|
66
|
+
|
|
67
|
+
const palCrawl = new PalCrawl();
|
|
68
|
+
const table = await palCrawl.get();
|
|
69
|
+
|
|
70
|
+
console.log(table);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
35
75
|
## License
|
|
36
76
|
|
|
37
|
-
MIT
|
|
77
|
+
This project is licensed under the MIT License. See the [LICENSE](#license) section for details.
|
package/dist/pal.js
CHANGED
|
@@ -34,34 +34,38 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.PalCrawl = void 0;
|
|
37
|
-
const
|
|
37
|
+
const https = __importStar(require("https"));
|
|
38
|
+
const url_1 = require("url");
|
|
38
39
|
const cheerio = __importStar(require("cheerio"));
|
|
39
40
|
const config_1 = require("./config");
|
|
40
41
|
class PalCrawl {
|
|
41
42
|
async getPalHTML() {
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
const url = new url_1.URL(config_1.Config.URL, config_1.Config.DOMAIN);
|
|
45
|
+
const options = {
|
|
45
46
|
headers: {
|
|
46
47
|
'User-Agent': config_1.Config.UserAgent,
|
|
47
48
|
},
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
else {
|
|
56
|
-
if (err instanceof Error) {
|
|
57
|
-
throw new Error(err.message);
|
|
49
|
+
};
|
|
50
|
+
https
|
|
51
|
+
.get(url, options, (res) => {
|
|
52
|
+
if (res.statusCode &&
|
|
53
|
+
(res.statusCode < 200 || res.statusCode >= 300)) {
|
|
54
|
+
reject(new Error(`Invalid response: ${res.statusCode} ${res.statusMessage}`));
|
|
55
|
+
return;
|
|
58
56
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
let data = '';
|
|
58
|
+
res.on('data', (chunk) => {
|
|
59
|
+
data += chunk;
|
|
60
|
+
});
|
|
61
|
+
res.on('end', () => {
|
|
62
|
+
resolve(data);
|
|
63
|
+
});
|
|
64
|
+
})
|
|
65
|
+
.on('error', (err) => {
|
|
66
|
+
reject(err);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
65
69
|
}
|
|
66
70
|
parseTable(html) {
|
|
67
71
|
const $ = cheerio.load(html);
|
package/dist/pal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pal-crawl",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "국회입법예고(pal.assembly.go.kr)의 진행 중인 입법 예고 크롤러",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "vientorepublic",
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
},
|
|
24
24
|
"homepage": "https://github.com/vientorepublic/pal-crawl#readme",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"axios": "^1.7.9",
|
|
27
26
|
"cheerio": "^1.0.0"
|
|
28
27
|
},
|
|
29
28
|
"devDependencies": {
|