Toggle navigation
Toggle navigation
This project
Loading...
Sign in
박건희
/
emon_bot
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
String15
2022-05-31 15:46:13 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
407e22ebbfe6ce5f546a5a48fd7a77e9df613574
407e22eb
1 parent
f323feb9
Add blueblack crawling method
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
0 deletions
Commands/Stationery/search.js
Commands/Stationery/search.js
View file @
407e22e
...
...
@@ -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
]
});
});
...
...
Please
register
or
login
to post a comment