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:42:57 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
f323feb945fc358b2b2f3d8d0f7b73d6f253af38
f323feb9
1 parent
75b5071e
Fixed some errors
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
10 deletions
Commands/Stationery/search.js
Commands/Stationery/search.js
View file @
f323feb
...
...
@@ -12,7 +12,8 @@ exports.run = async (client, msg, args, prefix) => {
const
page
=
await
browser
.
newPage
();
console
.
log
(
'Open Browser'
);
// 1. bestpen
// 1. 베스트펜
try
{
console
.
log
(
"bestpen crawling"
);
await
page
.
goto
(
'http://www.bestpen.kr'
);
...
...
@@ -22,6 +23,7 @@ exports.run = async (client, msg, args, prefix) => {
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,6 +64,7 @@ exports.run = async (client, msg, args, prefix) => {
}
// 2. 펜카페
try
{
console
.
log
(
"pencafe crawling"
);
await
page
.
goto
(
'http://www.pencafe.co.kr'
);
...
...
@@ -70,6 +73,7 @@ exports.run = async (client, msg, args, prefix) => {
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
)
{
// 제품 정보가 아예 없을 경우 "검색결과 없음"으로 표시
...
...
Please
register
or
login
to post a comment