String15

Fixed some errors

...@@ -12,16 +12,18 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -12,16 +12,18 @@ exports.run = async (client, msg, args, prefix) => {
12 const page = await browser.newPage(); 12 const page = await browser.newPage();
13 console.log('Open Browser'); 13 console.log('Open Browser');
14 14
15 - // 1. bestpen 15 + // 1. 베스트펜
16 - console.log("bestpen crawling"); 16 + try {
17 - await page .goto('http://www.bestpen.kr'); 17 + console.log("bestpen crawling");
18 + await page .goto('http://www.bestpen.kr');
18 19
19 - // 검색창으로 이동 & search 검색 20 + // 검색창으로 이동 & search 검색
20 - await page.waitForSelector('#header > div.headerBtm > div > p.searchOpen > i'); 21 + await page.waitForSelector('#header > div.headerBtm > div > p.searchOpen > i');
21 - await page .click('#header > div.headerBtm > div > p.searchOpen > i'); 22 + await page .click('#header > div.headerBtm > div > p.searchOpen > i');
22 - await page .type('#keyword', search); 23 + await page .type('#keyword', search);
23 - await page .keyboard.press( "Enter" ); 24 + await page .keyboard.press( "Enter" );
24 - // await page.screenshot({ path : "screenshot.png" }); 25 + // await page.screenshot({ path : "screenshot.png" });
26 + } catch { ; } // 사이트 링크에 이상이 생겼거나 검색에 문제가 생겼을 경우 프로그램이 종료되는 것을 방지
25 27
26 // 검색 결과 가져오기 (최대 4개) 28 // 검색 결과 가져오기 (최대 4개)
27 var bestpen = ''; 29 var bestpen = '';
...@@ -37,10 +39,10 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -37,10 +39,10 @@ exports.run = async (client, msg, args, prefix) => {
37 39
38 // 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음 40 // 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음
39 // -> 글자수 제한(1024)도 있으므로 제거 41 // -> 글자수 제한(1024)도 있으므로 제거
40 - bestpen_link = bestpen_link.slice(0, bestpen_link.indexOf('&search')) 42 + bestpen_link = bestpen_link.slice(0, bestpen_link.indexOf('&search'));
41 43
42 try { 44 try {
43 - var price = await page.waitForSelector( '#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-price > p:nth-child(2) > span.price'); 45 + var price = await page.waitForSelector('#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-price > p:nth-child(2) > span.price');
44 var bestpen_data = await page.evaluate( price => price.textContent, price ); 46 var bestpen_data = await page.evaluate( price => price.textContent, price );
45 // console.log("베스트펜 검색 결과 가격 : ", bestpen_data); 47 // console.log("베스트펜 검색 결과 가격 : ", bestpen_data);
46 } catch { 48 } catch {
...@@ -48,11 +50,11 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -48,11 +50,11 @@ exports.run = async (client, msg, args, prefix) => {
48 bestpen_data = "SOLD OUT"; 50 bestpen_data = "SOLD OUT";
49 } 51 }
50 52
51 - bestpen += `[${bestpen_title}](${bestpen_link}) - ${bestpen_data}` + '\n' 53 + bestpen += `[${bestpen_title}](${bestpen_link}) - ${bestpen_data}` + '\n';
52 } catch { 54 } catch {
53 if (i == 1) { 55 if (i == 1) {
54 // 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시 56 // 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
55 - bestpen += "검색결과 없음" + '\n' 57 + bestpen += "검색결과 없음" + '\n';
56 break; 58 break;
57 } else { 59 } else {
58 // 제품 개수가 4개 이하인 경우 60 // 제품 개수가 4개 이하인 경우
...@@ -62,14 +64,16 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -62,14 +64,16 @@ exports.run = async (client, msg, args, prefix) => {
62 } 64 }
63 65
64 // 2. 펜카페 66 // 2. 펜카페
65 - console.log("pencafe crawling"); 67 + try {
66 - await page .goto('http://www.pencafe.co.kr'); 68 + console.log("pencafe crawling");
69 + await page .goto('http://www.pencafe.co.kr');
67 70
68 - // search 검색 71 + // search 검색
69 - await page.waitForSelector('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input'); 72 + await page.waitForSelector('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input');
70 - await page .type('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input', search); 73 + await page .type('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input', search);
71 - await page .keyboard.press( "Enter" ); 74 + await page .keyboard.press( "Enter" );
72 - // await page.screenshot({ path : "screenshot.png" }); 75 + // await page.screenshot({ path : "screenshot.png" });
76 + } catch { ; } // 사이트 링크에 이상이 생겼거나 검색에 문제가 생겼을 경우 프로그램이 종료되는 것을 방지
73 77
74 // 검색 결과 가져오기 (최대 4개) 78 // 검색 결과 가져오기 (최대 4개)
75 var pencafe = ''; 79 var pencafe = '';
...@@ -80,9 +84,9 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -80,9 +84,9 @@ exports.run = async (client, msg, args, prefix) => {
80 // console.log("펜카페 검색 결과 제품명 : ", pencafe_title); 84 // console.log("펜카페 검색 결과 제품명 : ", pencafe_title);
81 85
82 // 펜카페 구조상 제품명 앞에 할인률(ex. 17%)이 붙는 경우가 많음 -> 제거 86 // 펜카페 구조상 제품명 앞에 할인률(ex. 17%)이 붙는 경우가 많음 -> 제거
83 - if (pencafe_title.indexOf('(') != -1) { pencafe_title = pencafe_title.slice(pencafe_title.indexOf('%')+1) } 87 + if (pencafe_title.indexOf('%') != -1) { pencafe_title = pencafe_title.slice(pencafe_title.indexOf('%')+1); }
84 // 펜카페 구조상 제품명 뒤에 사족(ex. (색상선택/금장~~~))이 붙는 경우가 많음 -> 제거 88 // 펜카페 구조상 제품명 뒤에 사족(ex. (색상선택/금장~~~))이 붙는 경우가 많음 -> 제거
85 - if (pencafe_title.indexOf('(') != -1) { pencafe_title = pencafe_title.slice(0, pencafe_title.lastIndexOf('(')) } 89 + if (pencafe_title.indexOf('(') != -1) { pencafe_title = pencafe_title.slice(0, pencafe_title.lastIndexOf('(')); }
86 90
87 var link = await page.waitForSelector('#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-name > a'); 91 var link = await page.waitForSelector('#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-name > a');
88 var pencafe_link = await page.evaluate( link => link.href, link ); 92 var pencafe_link = await page.evaluate( link => link.href, link );
...@@ -90,10 +94,10 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -90,10 +94,10 @@ exports.run = async (client, msg, args, prefix) => {
90 94
91 // 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음 95 // 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음
92 // -> 글자수 제한(1024)도 있으므로 제거 96 // -> 글자수 제한(1024)도 있으므로 제거
93 - pencafe_link = pencafe_link.slice(0, pencafe_link.indexOf('&search')) 97 + pencafe_link = pencafe_link.slice(0, pencafe_link.indexOf('&search'));
94 98
95 try { 99 try {
96 - var price = await page.waitForSelector( '#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-price > span'); 100 + var price = await page.waitForSelector('#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-price > span');
97 var pencafe_data = await page.evaluate( price => price.textContent, price ); 101 var pencafe_data = await page.evaluate( price => price.textContent, price );
98 // console.log("펜카페 검색 결과 가격 : ", pencafe_data); 102 // console.log("펜카페 검색 결과 가격 : ", pencafe_data);
99 } catch { 103 } catch {
...@@ -101,7 +105,7 @@ exports.run = async (client, msg, args, prefix) => { ...@@ -101,7 +105,7 @@ exports.run = async (client, msg, args, prefix) => {
101 pencafe_data = "SOLD OUT"; 105 pencafe_data = "SOLD OUT";
102 } 106 }
103 107
104 - pencafe += `[${pencafe_title}](${pencafe_link}) - ${pencafe_data}` + '\n' 108 + pencafe += `[${pencafe_title}](${pencafe_link}) - ${pencafe_data}` + '\n';
105 } catch { 109 } catch {
106 if (i == 1) { 110 if (i == 1) {
107 // 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시 111 // 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
......