String15

Update the resulting design (character limit, etc.)

......@@ -14,9 +14,10 @@ exports.run = async (client, msg, args, prefix) => {
// 1. bestpen
console.log("bestpen crawling");
await page .goto('http://www.bestpen.kr/index.html');
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" );
......@@ -34,8 +35,12 @@ exports.run = async (client, msg, args, prefix) => {
var bestpen_link = await page.evaluate( link => link.href, link );
// console.log("베스트펜 검색 링크 : ", bestpen_link);
// 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음
// -> 글자수 제한(1024)도 있으므로 제거
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 {
......@@ -47,11 +52,7 @@ exports.run = async (client, msg, args, prefix) => {
} catch {
if (i == 1) {
// 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
bestpen_title = "검색결과 없음";
bestpen_link = "";
bestpen_data = "";
bestpen += `[${bestpen_title}](${bestpen_link}) - ${bestpen_data}` + '\n'
bestpen += "검색결과 없음" + '\n'
break;
} else {
// 제품 개수가 4개 이하인 경우
......@@ -62,9 +63,10 @@ exports.run = async (client, msg, args, prefix) => {
// 2. 펜카페
console.log("pencafe crawling");
await page .goto('http://www.pencafe.co.kr/');
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" });
......@@ -77,12 +79,21 @@ exports.run = async (client, msg, args, prefix) => {
var pencafe_title = await page.evaluate( title => title.textContent, title );
// console.log("펜카페 검색 결과 제품명 : ", pencafe_title);
// 펜카페 구조상 제품명 앞에 할인률(ex. 17%)이 붙는 경우가 많음 -> 제거
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('(')) }
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 );
// console.log("펜카페 검색 링크 : ", pencafe_link);
// 링크 구조상 &search 뒷부분은 제품 링크를 띄우는데 영향을 미치지 않음
// -> 글자수 제한(1024)도 있으므로 제거
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 {
......@@ -94,11 +105,7 @@ exports.run = async (client, msg, args, prefix) => {
} catch {
if (i == 1) {
// 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
pencafe_title = "검색결과 없음";
pencafe_link = "";
pencafe_data = "";
pencafe += `[${pencafe_title}](${pencafe_link}) - ${pencafe_data}` + '\n'
pencafe += "검색결과 없음" + '\n'
break;
} else {
// 제품 개수가 4개 이하인 경우
......@@ -116,11 +123,14 @@ exports.run = async (client, msg, args, prefix) => {
.setTitle(`${search}에 대한 검색 결과`)
.setColor("E5D49A")
// 베스트펜 검색 결과 (ex. 제품명(링크) - 금액)
.addField('베스트펜', `${bestpen}`)
.addField('베스트펜', `${bestpen.slice(0, 1023)}`)
// 펜카페 검색 결과
.addField('펜카페', `${pencafe}`)
.addField('펜카페', `${pencafe.slice(0, 1023)}`)
msg.reply({ embeds: [Commands] });
});
// 검색 대기 시간이 길어질 수 있으므로 사용자에게 진행상황을 알려줄 필요가 있다
msg.reply("검색중 ...");
} else {
msg.reply("검색어가 없습니다. 검색어를 추가해서 다시 입력해주세요.");
}
......