홍용민

사색의광장 버스 정보 읽기 베이스

1 +let request = require('request');
2 +let cheerio = require('cheerio');
3 +
4 +const bus_url = 'http://apis.data.go.kr/6410000/busarrivalservice/getBusArrivalList';
5 +const bus_key = 'RwxSWXH88b2bKOAT6Ot3FHorPZQW9omma0xYIjtJe0JIKe4DC7TjX7Uj6E1ArzYi2AvVETmPrAIYyY8FlL%2BfAA%3D%3D';
6 +const stationID = '228000708';
7 +
8 +const BusArrivalUrl = bus_url + '?servicekey=' + bus_key + '&stationId=' + stationID;// 사색의광장 정류장 버스 도착 정보 조회용
9 +console.log(BusArrivalUrl);
10 +
11 +const _sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));
12 +var routeID = [];
13 +var BusNum = [];
14 +request(BusArrivalUrl, (err, res, body) => {
15 + var $ = cheerio.load(body, {decodeEntities: false});
16 +
17 + $('busArrivalList').each(function(idx){
18 + let route = $(this).find('routeId').text();
19 + routeID.push(route);
20 + })
21 + console.log(routeID);
22 +})
23 +
24 +const route_url = 'http://apis.data.go.kr/6410000/busrouteservice/getBusRouteInfoItem';
25 +const route_key = 'RwxSWXH88b2bKOAT6Ot3FHorPZQW9omma0xYIjtJe0JIKe4DC7TjX7Uj6E1ArzYi2AvVETmPrAIYyY8FlL%2BfAA%3D%3D';
26 +
27 +var j = 0;
28 +function getBusNum(){
29 + let BusRouteUrl = route_url + '?servicekey=' + route_key + '&routeId=';
30 + BusRouteUrl += routeID[j++];
31 + console.log(BusRouteUrl);
32 +
33 + request(BusRouteUrl, (err, res, body) => {
34 + var $ = cheerio.load(body, {decodeEntities: false});
35 + $('busRouteInfoItem').each(function(idx){
36 + let num = $(this).find('routeName').text();
37 + BusNum.push(num);
38 + console.log(num);
39 + })
40 + })
41 +}
42 +
43 +function useFor(){
44 + for(var i=0; i<routeID.length; i++){
45 + setTimeout(getBusNum, 1000);
46 + }
47 +}
48 +setTimeout(useFor, 500);
1 +{
2 + "name": "bustime",
3 + "version": "1.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "amdefine": {
8 + "version": "1.0.1",
9 + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
10 + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
11 + },
12 + "async": {
13 + "version": "0.2.10",
14 + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
15 + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
16 + },
17 + "boolbase": {
18 + "version": "1.0.0",
19 + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
20 + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
21 + },
22 + "cheerio": {
23 + "version": "1.0.0-rc.9",
24 + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.9.tgz",
25 + "integrity": "sha512-QF6XVdrLONO6DXRF5iaolY+odmhj2CLj+xzNod7INPWMi/x9X4SOylH0S/vaPpX+AUU6t04s34SQNh7DbkuCng==",
26 + "requires": {
27 + "cheerio-select": "^1.4.0",
28 + "dom-serializer": "^1.3.1",
29 + "domhandler": "^4.2.0",
30 + "htmlparser2": "^6.1.0",
31 + "parse5": "^6.0.1",
32 + "parse5-htmlparser2-tree-adapter": "^6.0.1",
33 + "tslib": "^2.2.0"
34 + }
35 + },
36 + "cheerio-select": {
37 + "version": "1.4.0",
38 + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.4.0.tgz",
39 + "integrity": "sha512-sobR3Yqz27L553Qa7cK6rtJlMDbiKPdNywtR95Sj/YgfpLfy0u6CGJuaBKe5YE/vTc23SCRKxWSdlon/w6I/Ew==",
40 + "requires": {
41 + "css-select": "^4.1.2",
42 + "css-what": "^5.0.0",
43 + "domelementtype": "^2.2.0",
44 + "domhandler": "^4.2.0",
45 + "domutils": "^2.6.0"
46 + }
47 + },
48 + "css-select": {
49 + "version": "4.1.2",
50 + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.2.tgz",
51 + "integrity": "sha512-nu5ye2Hg/4ISq4XqdLY2bEatAcLIdt3OYGFc9Tm9n7VSlFBcfRv0gBNksHRgSdUDQGtN3XrZ94ztW+NfzkFSUw==",
52 + "requires": {
53 + "boolbase": "^1.0.0",
54 + "css-what": "^5.0.0",
55 + "domhandler": "^4.2.0",
56 + "domutils": "^2.6.0",
57 + "nth-check": "^2.0.0"
58 + }
59 + },
60 + "css-what": {
61 + "version": "5.0.0",
62 + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.0.tgz",
63 + "integrity": "sha512-qxyKHQvgKwzwDWC/rGbT821eJalfupxYW2qbSJSAtdSTimsr/MlaGONoNLllaUPZWf8QnbcKM/kPVYUQuEKAFA=="
64 + },
65 + "dom-serializer": {
66 + "version": "1.3.2",
67 + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
68 + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
69 + "requires": {
70 + "domelementtype": "^2.0.1",
71 + "domhandler": "^4.2.0",
72 + "entities": "^2.0.0"
73 + }
74 + },
75 + "domelementtype": {
76 + "version": "2.2.0",
77 + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
78 + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
79 + },
80 + "domhandler": {
81 + "version": "4.2.0",
82 + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
83 + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
84 + "requires": {
85 + "domelementtype": "^2.2.0"
86 + }
87 + },
88 + "domutils": {
89 + "version": "2.6.0",
90 + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz",
91 + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==",
92 + "requires": {
93 + "dom-serializer": "^1.0.1",
94 + "domelementtype": "^2.2.0",
95 + "domhandler": "^4.2.0"
96 + }
97 + },
98 + "entities": {
99 + "version": "2.2.0",
100 + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
101 + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
102 + },
103 + "htmlparser2": {
104 + "version": "6.1.0",
105 + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
106 + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
107 + "requires": {
108 + "domelementtype": "^2.0.1",
109 + "domhandler": "^4.0.0",
110 + "domutils": "^2.5.2",
111 + "entities": "^2.0.0"
112 + }
113 + },
114 + "nth-check": {
115 + "version": "2.0.0",
116 + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
117 + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
118 + "requires": {
119 + "boolbase": "^1.0.0"
120 + }
121 + },
122 + "optimist": {
123 + "version": "0.3.7",
124 + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
125 + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
126 + "requires": {
127 + "wordwrap": "~0.0.2"
128 + }
129 + },
130 + "parse5": {
131 + "version": "6.0.1",
132 + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
133 + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
134 + },
135 + "parse5-htmlparser2-tree-adapter": {
136 + "version": "6.0.1",
137 + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
138 + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
139 + "requires": {
140 + "parse5": "^6.0.1"
141 + }
142 + },
143 + "require": {
144 + "version": "2.4.20",
145 + "resolved": "https://registry.npmjs.org/require/-/require-2.4.20.tgz",
146 + "integrity": "sha1-Zstrqqu2XeinHXk/XGX9GE83mLY=",
147 + "requires": {
148 + "std": "0.1.40",
149 + "uglify-js": "2.3.0"
150 + }
151 + },
152 + "source-map": {
153 + "version": "0.1.43",
154 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
155 + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
156 + "requires": {
157 + "amdefine": ">=0.0.4"
158 + }
159 + },
160 + "std": {
161 + "version": "0.1.40",
162 + "resolved": "https://registry.npmjs.org/std/-/std-0.1.40.tgz",
163 + "integrity": "sha1-Nnil9lCU2eG2teJu2/wCErg0K3E="
164 + },
165 + "tslib": {
166 + "version": "2.2.0",
167 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
168 + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
169 + },
170 + "uglify-js": {
171 + "version": "2.3.0",
172 + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.0.tgz",
173 + "integrity": "sha1-LN7BbTeKiituz7aYl4TPi3rlSR8=",
174 + "requires": {
175 + "async": "~0.2.6",
176 + "optimist": "~0.3.5",
177 + "source-map": "~0.1.7"
178 + }
179 + },
180 + "wordwrap": {
181 + "version": "0.0.3",
182 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
183 + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
184 + }
185 + }
186 +}
1 +{
2 + "name": "bustime",
3 + "version": "1.0.0",
4 + "description": "",
5 + "main": "BusInfo.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1"
8 + },
9 + "repository": {
10 + "type": "git",
11 + "url": "http://khuhub.khu.ac.kr/2020105677/BusTime.git"
12 + },
13 + "author": "",
14 + "license": "ISC",
15 + "dependencies": {
16 + "cheerio": "^1.0.0-rc.9",
17 + "require": "^2.4.20"
18 + }
19 +}