신일섭

G마켓, 쿠팡 크롤링 기능 업데이트

1 +const puppeteer = require('puppeteer');
2 +
3 +// Gmarket Cart Crawling
4 +(async () => {
5 +
6 + // launching headless browser
7 + const browser = await puppeteer.launch();
8 + // making a new page
9 + const page = await browser.newPage();
10 +
11 + //console input id & password
12 + var args = process.argv;
13 +
14 +
15 + var c_id = args[2];
16 + var c_pw = args[3];
17 +
18 + console.log(args[2] + " " + args[3]);
19 +
20 +
21 + // Gmarket login page
22 + await page.goto('https://login.coupang.com/login/login.pang?rtnUrl=https%3A%2F%2Fwww.coupang.com%2Fnp%2Fpost%2Flogin%3Fr%3Dhttps%253A%252F%252Fwww.coupang.com%252F');
23 + // Ading user information
24 + await page.evaluate((id, pwd) => {
25 + document.querySelector('#login-email-input').value = id;
26 + document.querySelector('#login-password-input').value = pwd;
27 + }, c_id, c_pw);
28 +
29 + await console.log(c_id,c_pw);
30 +
31 + // try login
32 + await page.click('.login__button');
33 + await page.waitForNavigation();
34 +
35 + // goto cart page
36 + await page.goto('https://cart.coupang.com/cartView.pang');
37 + await page.screenshot({ path: 'coupang.png', fullPage:true });
38 +
39 + // container which will hold crawled data [{},{}...]
40 + let data = [];
41 +
42 + // crawling start! (using getOne and getAll function)
43 + data = await getAll(page);
44 + //data.push(await getAll(page)); // data[0][n]
45 +
46 + //logging the result
47 + for(let index = 0; index < data.length; index++){
48 + console.log(data[index]);
49 + }
50 +
51 + await browser.close();
52 +
53 +})();
54 +
55 +
56 +
57 + // Crawling cart informations(object) to data(array)
58 + async function getAll(page) {
59 + var data = [];
60 +
61 + //coupang table tr counts has dummy 3 tr
62 + const number = await page.$$eval("#cartTable-sku > tr", (data) => data.length)-3;
63 + // counting the number of the box
64 + // coupang car info starts with index 2
65 + for (let index = 0; index < number; index++) {
66 + data.push(await getOne(page, index + 2));
67 + // pushing to the array
68 +
69 + }
70 +
71 + return Promise.resolve(data);
72 +}
73 +
74 +
75 +// Crawling cart information to data(object)
76 +async function getOne(page, index) {
77 +
78 + var data = {};
79 +
80 + // this is example code
81 + //data.programPeriod = await page.$eval("#iph_content > div > div.list_type_h1.web_view.mt3 > table > tbody > tr:nth-child(" + index + ") > td:nth-child(5)", (data) => data.textContent);
82 +
83 + // product name
84 + data.prd_name = await page.$eval("#cartTable-sku > tr:nth-child(" + index + ") > td.product-box > div.product-name-part > a", data => data.textContent);
85 + // product price
86 + data.prd_price = await page.$eval("#cartTable-sku > tr:nth-child(" + index + ") > td.unit-total-price > div", data => data.textContent);
87 + // product link
88 + data.prd_link = await page.$eval("#cartTable-sku > tr:nth-child(" + index + ") > td.product-box > div.product-name-part > a", data => data.href);
89 + // product image source
90 + data.prd_img = await page.$eval("#cartTable-sku > tr:nth-child(" + index + ") > td:nth-child(2) > a > img", data => data.src);
91 + // not yet
92 +
93 + return Promise.resolve(data);
94 +}
...\ No newline at end of file ...\ No newline at end of file
1 +const puppeteer = require('puppeteer');
2 +const readline = require('readline');
3 +
4 +
5 +// Gmarket Cart Crawling
6 +(async () => {
7 +
8 + // launching headless browser
9 + const browser = await puppeteer.launch();
10 + // making a new page
11 + const page = await browser.newPage();
12 +
13 + //console input id & password
14 + var args = process.argv;
15 +
16 + var g_id = args[2];
17 + var g_pw = args[3];
18 +
19 + console.log(args[2] + " " + args[3]);
20 +
21 + // Gmarket login page
22 + await page.goto('https://signinssl.gmarket.co.kr/login/login?url=https://www.gmarket.co.kr/');
23 + // Ading user information
24 + await page.evaluate((id, pwd) => {
25 + document.querySelector('#id').value = id;
26 + document.querySelector('#pwd').value = pwd;
27 + }, g_id, g_pw);
28 +
29 + await console.log(g_id,g_pw);
30 +
31 + // try login
32 + await page.click('.button_login');
33 + await page.waitForNavigation();
34 +
35 + // goto cart page
36 + await page.goto('https://cart.gmarket.co.kr/ko/cart');
37 + await page.screenshot({ path: 'gmarket.png', fullPage:true });
38 +
39 + // container which will hold crawled data [{},{}...]
40 + let data = [];
41 +
42 + // crawling start! (using getOne and getAll function)
43 + data = await getAll(page);
44 + //data.push(await getAll(page)); // data[0][n]
45 +
46 + //logging the result
47 + for(let index = 0; index < data.length; index++){
48 + console.log(data[index]);
49 + }
50 +
51 + await browser.close();
52 +
53 +})();
54 +
55 +
56 +
57 + // Crawling cart informations(object) to data(array)
58 + async function getAll(page) {
59 + var data = [];
60 +
61 + //const number = await page.$$eval("#cart_list > ol > li:nth-child(1) > div.cart--basket_body > div > ul > li", (data) => data.length);
62 + const number = await page.$$eval("#cart_list > ol > li", (data) => data.length);
63 + // counting the number of the box
64 + for (let index = 0; index < number; index++) {
65 + data.push(await getOne(page, index + 1));
66 + // pushing to the array
67 +
68 + }
69 +
70 + return Promise.resolve(data);
71 +}
72 +
73 +
74 +// Crawling cart information to data(object)
75 +async function getOne(page, index) {
76 +
77 + var data = {};
78 +
79 + // this is example code
80 + //data.programPeriod = await page.$eval("#iph_content > div > div.list_type_h1.web_view.mt3 > table > tbody > tr:nth-child(" + index + ") > td:nth-child(5)", (data) => data.textContent);
81 +
82 + // product name
83 + data.prd_name = await page.$eval("#cart_list > ol > li:nth-child(" + index + ") > div.cart--basket_body > div > ul > li > div > div.item_info > dl > dd > div.section.item_title > a > span", data => data.textContent);
84 + // product price
85 + data.prd_price = await page.$eval("#cart_list > ol > li:nth-child(" + index + ") > div.cart--basket_body > div > ul > li > div > div.item_info > dl > dd > div.section.item_price > span.format-price > span > strong", data => data.textContent);
86 + // product link
87 + data.prd_link = await page.$eval("#cart_list > ol > li:nth-child(" + index + ") > div.cart--basket_body > div > ul > li > div > div.item_info > dl > dd > div.section.item_title > a", data => data.href);
88 + // product image source
89 + data.prd_img = await page.$eval("#cart_list > ol > li:nth-child(" + index + ") > div.cart--basket_body > div > ul > li > div > div.item_img > a > img", data => data.src);
90 + // not yet
91 +
92 + return Promise.resolve(data);
93 +}
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "name": "shoppingcart",
3 + "version": "1.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "@types/node": {
8 + "version": "14.0.9",
9 + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.9.tgz",
10 + "integrity": "sha512-0sCTiXKXELOBxvZLN4krQ0FPOAA7ij+6WwvD0k/PHd9/KAkr4dXel5J9fh6F4x1FwAQILqAWkmpeuS6mjf1iKA==",
11 + "optional": true
12 + },
13 + "@types/yauzl": {
14 + "version": "2.9.1",
15 + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz",
16 + "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==",
17 + "optional": true,
18 + "requires": {
19 + "@types/node": "*"
20 + }
21 + },
22 + "agent-base": {
23 + "version": "5.1.1",
24 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz",
25 + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g=="
26 + },
27 + "balanced-match": {
28 + "version": "1.0.0",
29 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
30 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
31 + },
32 + "base64-js": {
33 + "version": "1.3.1",
34 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
35 + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
36 + },
37 + "bl": {
38 + "version": "4.0.2",
39 + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz",
40 + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==",
41 + "requires": {
42 + "buffer": "^5.5.0",
43 + "inherits": "^2.0.4",
44 + "readable-stream": "^3.4.0"
45 + }
46 + },
47 + "brace-expansion": {
48 + "version": "1.1.11",
49 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
50 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
51 + "requires": {
52 + "balanced-match": "^1.0.0",
53 + "concat-map": "0.0.1"
54 + }
55 + },
56 + "buffer": {
57 + "version": "5.6.0",
58 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
59 + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
60 + "requires": {
61 + "base64-js": "^1.0.2",
62 + "ieee754": "^1.1.4"
63 + }
64 + },
65 + "buffer-crc32": {
66 + "version": "0.2.13",
67 + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
68 + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
69 + },
70 + "chownr": {
71 + "version": "1.1.4",
72 + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
73 + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
74 + },
75 + "concat-map": {
76 + "version": "0.0.1",
77 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
78 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
79 + },
80 + "debug": {
81 + "version": "4.1.1",
82 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
83 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
84 + "requires": {
85 + "ms": "^2.1.1"
86 + }
87 + },
88 + "end-of-stream": {
89 + "version": "1.4.4",
90 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
91 + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
92 + "requires": {
93 + "once": "^1.4.0"
94 + }
95 + },
96 + "extract-zip": {
97 + "version": "2.0.0",
98 + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.0.tgz",
99 + "integrity": "sha512-i42GQ498yibjdvIhivUsRslx608whtGoFIhF26Z7O4MYncBxp8CwalOs1lnHy21A9sIohWO2+uiE4SRtC9JXDg==",
100 + "requires": {
101 + "@types/yauzl": "^2.9.1",
102 + "debug": "^4.1.1",
103 + "get-stream": "^5.1.0",
104 + "yauzl": "^2.10.0"
105 + }
106 + },
107 + "fd-slicer": {
108 + "version": "1.1.0",
109 + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
110 + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
111 + "requires": {
112 + "pend": "~1.2.0"
113 + }
114 + },
115 + "fs-constants": {
116 + "version": "1.0.0",
117 + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
118 + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
119 + },
120 + "fs.realpath": {
121 + "version": "1.0.0",
122 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
123 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
124 + },
125 + "get-stream": {
126 + "version": "5.1.0",
127 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
128 + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
129 + "requires": {
130 + "pump": "^3.0.0"
131 + }
132 + },
133 + "glob": {
134 + "version": "7.1.6",
135 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
136 + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
137 + "requires": {
138 + "fs.realpath": "^1.0.0",
139 + "inflight": "^1.0.4",
140 + "inherits": "2",
141 + "minimatch": "^3.0.4",
142 + "once": "^1.3.0",
143 + "path-is-absolute": "^1.0.0"
144 + }
145 + },
146 + "https-proxy-agent": {
147 + "version": "4.0.0",
148 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
149 + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
150 + "requires": {
151 + "agent-base": "5",
152 + "debug": "4"
153 + }
154 + },
155 + "ieee754": {
156 + "version": "1.1.13",
157 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
158 + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
159 + },
160 + "inflight": {
161 + "version": "1.0.6",
162 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
163 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
164 + "requires": {
165 + "once": "^1.3.0",
166 + "wrappy": "1"
167 + }
168 + },
169 + "inherits": {
170 + "version": "2.0.4",
171 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
172 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
173 + },
174 + "mime": {
175 + "version": "2.4.6",
176 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
177 + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
178 + },
179 + "minimatch": {
180 + "version": "3.0.4",
181 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
182 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
183 + "requires": {
184 + "brace-expansion": "^1.1.7"
185 + }
186 + },
187 + "mkdirp-classic": {
188 + "version": "0.5.3",
189 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
190 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
191 + },
192 + "ms": {
193 + "version": "2.1.2",
194 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
195 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
196 + },
197 + "once": {
198 + "version": "1.4.0",
199 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
200 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
201 + "requires": {
202 + "wrappy": "1"
203 + }
204 + },
205 + "path-is-absolute": {
206 + "version": "1.0.1",
207 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
208 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
209 + },
210 + "pend": {
211 + "version": "1.2.0",
212 + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
213 + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
214 + },
215 + "progress": {
216 + "version": "2.0.3",
217 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
218 + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
219 + },
220 + "proxy-from-env": {
221 + "version": "1.1.0",
222 + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
223 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
224 + },
225 + "pump": {
226 + "version": "3.0.0",
227 + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
228 + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
229 + "requires": {
230 + "end-of-stream": "^1.1.0",
231 + "once": "^1.3.1"
232 + }
233 + },
234 + "puppeteer": {
235 + "version": "3.3.0",
236 + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-3.3.0.tgz",
237 + "integrity": "sha512-23zNqRltZ1PPoK28uRefWJ/zKb5Jhnzbbwbpcna2o5+QMn17F0khq5s1bdH3vPlyj+J36pubccR8wiNA/VE0Vw==",
238 + "requires": {
239 + "debug": "^4.1.0",
240 + "extract-zip": "^2.0.0",
241 + "https-proxy-agent": "^4.0.0",
242 + "mime": "^2.0.3",
243 + "progress": "^2.0.1",
244 + "proxy-from-env": "^1.0.0",
245 + "rimraf": "^3.0.2",
246 + "tar-fs": "^2.0.0",
247 + "unbzip2-stream": "^1.3.3",
248 + "ws": "^7.2.3"
249 + }
250 + },
251 + "readable-stream": {
252 + "version": "3.6.0",
253 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
254 + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
255 + "requires": {
256 + "inherits": "^2.0.3",
257 + "string_decoder": "^1.1.1",
258 + "util-deprecate": "^1.0.1"
259 + }
260 + },
261 + "readline": {
262 + "version": "1.3.0",
263 + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz",
264 + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw="
265 + },
266 + "rimraf": {
267 + "version": "3.0.2",
268 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
269 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
270 + "requires": {
271 + "glob": "^7.1.3"
272 + }
273 + },
274 + "safe-buffer": {
275 + "version": "5.2.1",
276 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
277 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
278 + },
279 + "string_decoder": {
280 + "version": "1.3.0",
281 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
282 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
283 + "requires": {
284 + "safe-buffer": "~5.2.0"
285 + }
286 + },
287 + "tar-fs": {
288 + "version": "2.1.0",
289 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz",
290 + "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==",
291 + "requires": {
292 + "chownr": "^1.1.1",
293 + "mkdirp-classic": "^0.5.2",
294 + "pump": "^3.0.0",
295 + "tar-stream": "^2.0.0"
296 + }
297 + },
298 + "tar-stream": {
299 + "version": "2.1.2",
300 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz",
301 + "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==",
302 + "requires": {
303 + "bl": "^4.0.1",
304 + "end-of-stream": "^1.4.1",
305 + "fs-constants": "^1.0.0",
306 + "inherits": "^2.0.3",
307 + "readable-stream": "^3.1.1"
308 + }
309 + },
310 + "through": {
311 + "version": "2.3.8",
312 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
313 + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
314 + },
315 + "unbzip2-stream": {
316 + "version": "1.4.3",
317 + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
318 + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
319 + "requires": {
320 + "buffer": "^5.2.1",
321 + "through": "^2.3.8"
322 + }
323 + },
324 + "util-deprecate": {
325 + "version": "1.0.2",
326 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
327 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
328 + },
329 + "wrappy": {
330 + "version": "1.0.2",
331 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
332 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
333 + },
334 + "ws": {
335 + "version": "7.3.0",
336 + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz",
337 + "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w=="
338 + },
339 + "yauzl": {
340 + "version": "2.10.0",
341 + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
342 + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
343 + "requires": {
344 + "buffer-crc32": "~0.2.3",
345 + "fd-slicer": "~1.1.0"
346 + }
347 + }
348 + }
349 +}
1 +{
2 + "name": "shoppingcart",
3 + "version": "1.0.0",
4 + "description": "기록날짜 오후 1:30 2020-05-13",
5 + "main": "coupang.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1"
8 + },
9 + "repository": {
10 + "type": "git",
11 + "url": "ssh://git@khuhub.khu.ac.kr:12959/2015104185/ShoppingCart.git"
12 + },
13 + "author": "",
14 + "license": "ISC",
15 + "dependencies": {
16 + "puppeteer": "^3.3.0",
17 + "readline": "^1.3.0"
18 + }
19 +}