Toggle navigation
Toggle navigation
This project
Loading...
Sign in
김대선
/
Recruitment_Information_chatbot
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
김대선
2021-05-10 01:14:57 +0900
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
b31b25392dd05d073fa401c61fee4fe6410fe180
b31b2539
2 parents
ba4d069f
7ef6bf17
kakao 채용정보 가져오는 기능 개발이 끝나서 master에 병합
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
80 additions
and
72 deletions
app.js
router/naver.js
router/naverFunctions.js
app.js
View file @
b31b253
const
express
=
require
(
'express'
)
const
puppeteer
=
require
(
'puppeteer'
)
const
naverRouter
=
require
(
'./router/naver.js'
)
const
naverRouter
=
require
(
'./router/naver'
)
const
kakaoRouter
=
require
(
'./router/kakao'
)
const
app
=
express
();
const
server
=
app
.
listen
(
3000
,()
=>
{
const
host
=
server
.
address
().
address
const
port
=
server
.
address
().
port
...
...
router/naver.js
View file @
b31b253
const
express
=
require
(
'express'
)
const
router
=
express
.
Router
()
const
puppeteer
=
require
(
'puppeteer'
)
const
cheerio
=
require
(
'cheerio'
)
const
sanitizeHtml
=
require
(
'sanitize-html'
)
const
splitData
=
(
string
)
=>
{
const
temp
=
/
(
<a
([^
>
]
+
)
>
)
/g
.
exec
(
string
)
const
temp2
=
temp
[
0
].
split
(
'"'
);
url
=
"https://recruit.navercorp.com"
+
temp2
[
1
];
result
=
string
.
replace
(
/
(
<
([^
>
]
+
)
>
)
*
(\\
t
)?
/gi
,
""
).
split
(
"\t"
).
filter
((
ele
)
=>
ele
!=
''
)
result
.
pop
()
result
.
push
(
url
)
return
result
;
}
const
makeObject
=
(
array
)
=>
{
const
result
=
[]
let
tempData
=
null
for
(
let
i
of
array
){
tempData
=
splitData
(
i
)
if
(
tempData
.
length
==
5
){
result
.
push
({
title
:
tempData
[
0
],
term
:
tempData
[
2
],
tags
:
tempData
[
3
].
split
(
'#'
).
filter
((
ele
)
=>
ele
!=
''
),
url
:
tempData
[
4
]
})
}
else
if
(
tempData
.
length
==
4
){
result
.
push
({
title
:
tempData
[
0
],
term
:
tempData
[
2
],
url
:
tempData
[
3
]
})
}
}
return
result
}
const
getData
=
async
()
=>
{
const
browser
=
await
puppeteer
.
launch
();
const
page
=
await
browser
.
newPage
();
await
page
.
goto
(
'https://recruit.navercorp.com/naver/job/list/developer'
)
let
content
=
await
page
.
content
()
let
temp
=
null
;
while
(
true
){
if
(
temp
==
content
)
break
;
else
{
temp
=
await
page
.
content
()
await
page
.
click
(
'#moreDiv > button'
).
catch
((
error
)
=>
{
})
await
page
.
waitForTimeout
(
200
)
content
=
await
page
.
content
()
}
}
let
$
=
cheerio
.
load
(
content
,
{
decodeEntities
:
true
})
const
selector
=
'#jobListDiv > ul > li'
let
result
=
sanitizeHtml
(
$
(
selector
),
{
parser
:
{
decodeEntities
:
true
}
})
resArr
=
result
.
split
(
'</li><li>'
)
result
=
makeObject
(
resArr
)
console
.
log
(
result
)
return
result
;
}
const
naverFunction
=
require
(
'./naverFunctions'
)
router
.
get
(
'/'
,
(
req
,
res
,
error
)
=>
{
res
.
send
(
"naver home"
)
})
router
.
get
(
'/recruitment'
,
async
(
req
,
res
,
error
)
=>
{
res
.
send
(
await
getData
())
res
.
send
(
await
naverFunction
.
getData
())
})
...
...
router/naverFunctions.js
0 → 100644
View file @
b31b253
const
puppeteer
=
require
(
'puppeteer'
)
const
cheerio
=
require
(
'cheerio'
)
const
sanitizeHtml
=
require
(
'sanitize-html'
)
const
splitData
=
(
string
)
=>
{
const
temp
=
/
(
<a
([^
>
]
+
)
>
)
/g
.
exec
(
string
)
const
temp2
=
temp
[
0
].
split
(
'"'
);
url
=
"https://recruit.navercorp.com"
+
temp2
[
1
];
result
=
string
.
replace
(
/
(
<
([^
>
]
+
)
>
)
*
(\\
t
)?
/gi
,
""
).
split
(
"\t"
).
filter
((
ele
)
=>
ele
!=
''
)
result
.
pop
()
result
.
push
(
url
)
return
result
;
}
const
makeObject
=
(
array
)
=>
{
const
result
=
[]
let
tempData
=
null
for
(
let
i
of
array
){
tempData
=
splitData
(
i
)
if
(
tempData
.
length
==
5
){
result
.
push
({
title
:
tempData
[
0
],
term
:
tempData
[
2
],
tags
:
tempData
[
3
].
split
(
'#'
).
filter
((
ele
)
=>
ele
!=
''
),
url
:
tempData
[
4
]
})
}
else
if
(
tempData
.
length
==
4
){
result
.
push
({
title
:
tempData
[
0
],
term
:
tempData
[
2
],
url
:
tempData
[
3
]
})
}
}
return
result
}
const
getData
=
async
()
=>
{
const
browser
=
await
puppeteer
.
launch
();
const
page
=
await
browser
.
newPage
();
await
page
.
goto
(
'https://recruit.navercorp.com/naver/job/list/developer'
)
let
content
=
await
page
.
content
()
let
temp
=
null
;
while
(
true
){
if
(
temp
==
content
)
break
;
else
{
temp
=
await
page
.
content
()
await
page
.
click
(
'#moreDiv > button'
).
catch
((
error
)
=>
{
})
await
page
.
waitForTimeout
(
200
)
content
=
await
page
.
content
()
}
}
let
$
=
cheerio
.
load
(
content
,
{
decodeEntities
:
true
})
const
selector
=
'#jobListDiv > ul > li'
let
result
=
sanitizeHtml
(
$
(
selector
),
{
parser
:
{
decodeEntities
:
true
}
})
resArr
=
result
.
split
(
'</li><li>'
)
result
=
makeObject
(
resArr
)
console
.
log
(
result
)
return
result
;
}
module
.
exports
=
{
getData
:
getData
}
\ No newline at end of file
Please
register
or
login
to post a comment