String15

Add blueblack crawling method

......@@ -118,6 +118,56 @@ exports.run = async (client, msg, args, prefix) => {
}
}
// 3. 블루블랙
try {
console.log("blueblack crawling");
await page .goto('https://blueblack.co.kr');
// search 검색
await page.waitForSelector('#keyword');
await page .type('#keyword', search);
await page .keyboard.press( "Enter" );
// await page.screenshot({ path : "screenshot.png" });
} catch { ; } // 사이트 링크에 이상이 생겼거나 검색에 문제가 생겼을 경우 프로그램이 종료되는 것을 방지
// 검색 결과 가져오기 (최대 4개)
var blueblack = '';
for (var i = 1; i <= 4; i++) {
try {
var title = await page.waitForSelector('#contents > div:nth-child(4) > ul > li:nth-child('+i+') > div.description > p.name > a > span:nth-child(2)');
var blueblack_title = await page.evaluate( title => title.textContent, title );
// console.log("블루블랙 검색 결과 제품명 : ", blueblack_title);
var link = await page.waitForSelector('#contents > div:nth-child(4) > ul > li:nth-child('+i+') > div.description > p.name > a');
var blueblack_link = await page.evaluate( link => link.href, link );
// console.log("블루블랙 검색 링크 : ", blueblack_link);
var price = await page.waitForSelector('#contents > div:nth-child(4) > ul > li:nth-child('+i+') > div.description > ul > li:nth-child(3) > span:nth-child(2)');
var blueblack_data = await page.evaluate( price => price.textContent, price );
// console.log("블루블랙 검색 결과 가격 : ", blueblack_data);
try {
// 품절 아이콘이 있는지 확인
await page.$eval('#contents > div:nth-child(4) > ul > li:nth-child('+i+') > div.description > div.status > div > img', element => {
return element.getAttribute("src");
});
blueblack_data = 'SOLD OUT'
} catch { ; }
blueblack += `[${blueblack_title}](${blueblack_link}) - ${blueblack_data}` + '\n';
} catch {
if (i == 1) {
// 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
blueblack += "검색결과 없음" + '\n'
break;
} else {
// 제품 개수가 4개 이하인 경우
break;
}
}
}
// 브라우저 닫기
await browser.close();
console.log('Browser Closed');
......@@ -130,6 +180,8 @@ exports.run = async (client, msg, args, prefix) => {
.addField('베스트펜', `${bestpen.slice(0, 1023)}`)
// 펜카페 검색 결과
.addField('펜카페', `${pencafe.slice(0, 1023)}`)
// 블루블랙 검색 결과
.addField('블루블랙', `${blueblack.slice(0, 1023)}`)
msg.reply({ embeds: [Commands] });
});
......