String15

Fixed some errors

......@@ -12,16 +12,18 @@ exports.run = async (client, msg, args, prefix) => {
const page = await browser.newPage();
console.log('Open Browser');
// 1. bestpen
console.log("bestpen crawling");
await page .goto('http://www.bestpen.kr');
// 1. 베스트펜
try {
console.log("bestpen crawling");
await page .goto('http://www.bestpen.kr');
// 검색창으로 이동 & search 검색
await page.waitForSelector('#header > div.headerBtm > div > p.searchOpen > i');
await page .click('#header > div.headerBtm > div > p.searchOpen > i');
await page .type('#keyword', search);
await page .keyboard.press( "Enter" );
// await page.screenshot({ path : "screenshot.png" });
// 검색창으로 이동 & search 검색
await page.waitForSelector('#header > div.headerBtm > div > p.searchOpen > i');
await page .click('#header > div.headerBtm > div > p.searchOpen > i');
await page .type('#keyword', search);
await page .keyboard.press( "Enter" );
// await page.screenshot({ path : "screenshot.png" });
} catch { ; } // 사이트 링크에 이상이 생겼거나 검색에 문제가 생겼을 경우 프로그램이 종료되는 것을 방지
// 검색 결과 가져오기 (최대 4개)
var bestpen = '';
......@@ -37,10 +39,10 @@ exports.run = async (client, msg, args, prefix) => {
// 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음
// -> 글자수 제한(1024)도 있으므로 제거
bestpen_link = bestpen_link.slice(0, bestpen_link.indexOf('&search'))
bestpen_link = bestpen_link.slice(0, bestpen_link.indexOf('&search'));
try {
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');
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');
var bestpen_data = await page.evaluate( price => price.textContent, price );
// console.log("베스트펜 검색 결과 가격 : ", bestpen_data);
} catch {
......@@ -48,11 +50,11 @@ exports.run = async (client, msg, args, prefix) => {
bestpen_data = "SOLD OUT";
}
bestpen += `[${bestpen_title}](${bestpen_link}) - ${bestpen_data}` + '\n'
bestpen += `[${bestpen_title}](${bestpen_link}) - ${bestpen_data}` + '\n';
} catch {
if (i == 1) {
// 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
bestpen += "검색결과 없음" + '\n'
bestpen += "검색결과 없음" + '\n';
break;
} else {
// 제품 개수가 4개 이하인 경우
......@@ -62,14 +64,16 @@ exports.run = async (client, msg, args, prefix) => {
}
// 2. 펜카페
console.log("pencafe crawling");
await page .goto('http://www.pencafe.co.kr');
try {
console.log("pencafe crawling");
await page .goto('http://www.pencafe.co.kr');
// search 검색
await page.waitForSelector('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input');
await page .type('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input', search);
await page .keyboard.press( "Enter" );
// await page.screenshot({ path : "screenshot.png" });
// search 검색
await page.waitForSelector('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input');
await page .type('#header > div.hd_mib > div.hd_sch.f_left > form > fieldset > input', search);
await page .keyboard.press( "Enter" );
// await page.screenshot({ path : "screenshot.png" });
} catch { ; } // 사이트 링크에 이상이 생겼거나 검색에 문제가 생겼을 경우 프로그램이 종료되는 것을 방지
// 검색 결과 가져오기 (최대 4개)
var pencafe = '';
......@@ -80,9 +84,9 @@ exports.run = async (client, msg, args, prefix) => {
// console.log("펜카페 검색 결과 제품명 : ", pencafe_title);
// 펜카페 구조상 제품명 앞에 할인률(ex. 17%)이 붙는 경우가 많음 -> 제거
if (pencafe_title.indexOf('(') != -1) { pencafe_title = pencafe_title.slice(pencafe_title.indexOf('%')+1) }
if (pencafe_title.indexOf('%') != -1) { pencafe_title = pencafe_title.slice(pencafe_title.indexOf('%')+1); }
// 펜카페 구조상 제품명 뒤에 사족(ex. (색상선택/금장~~~))이 붙는 경우가 많음 -> 제거
if (pencafe_title.indexOf('(') != -1) { pencafe_title = pencafe_title.slice(0, pencafe_title.lastIndexOf('(')) }
if (pencafe_title.indexOf('(') != -1) { pencafe_title = pencafe_title.slice(0, pencafe_title.lastIndexOf('(')); }
var link = await page.waitForSelector('#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-name > a');
var pencafe_link = await page.evaluate( link => link.href, link );
......@@ -90,10 +94,10 @@ exports.run = async (client, msg, args, prefix) => {
// 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음
// -> 글자수 제한(1024)도 있으므로 제거
pencafe_link = pencafe_link.slice(0, pencafe_link.indexOf('&search'))
pencafe_link = pencafe_link.slice(0, pencafe_link.indexOf('&search'));
try {
var price = await page.waitForSelector( '#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-price > span');
var price = await page.waitForSelector('#searchWrap > div > div.item-wrap > div:nth-child(2) > dl:nth-child('+i+') > dd > ul > li.prd-price > span');
var pencafe_data = await page.evaluate( price => price.textContent, price );
// console.log("펜카페 검색 결과 가격 : ", pencafe_data);
} catch {
......@@ -101,7 +105,7 @@ exports.run = async (client, msg, args, prefix) => {
pencafe_data = "SOLD OUT";
}
pencafe += `[${pencafe_title}](${pencafe_link}) - ${pencafe_data}` + '\n'
pencafe += `[${pencafe_title}](${pencafe_link}) - ${pencafe_data}` + '\n';
} catch {
if (i == 1) {
// 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
......