Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
search-page
Commits
558b1436
Commit
558b1436
authored
Jan 13, 2021
by
Lee SeoYeon
Browse files
.
parents
3695b9ca
9168132d
Changes
4
Show whitespace changes
Inline
Side-by-side
client/src/App.js
View file @
558b1436
...
...
@@ -24,44 +24,30 @@ function App() {
setState
(
true
);
}
return
(
<
Container
className
=
"
vh-100
"
>
<
Row
className
=
"
d-flex justify-content-md-center
"
>
<
Col
md
=
{
6
}
className
=
"
mt-5
"
>
<
Image
src
=
{
ohuh
}
fluid
/>
<
/Col
>
<
Col
md
=
{
9
}
className
=
'
mr-6
'
>
<
Navbar
bg
=
"
#fff
"
variant
=
"
light
"
>
<
Nav
className
=
"
mr-auto
"
>
{
user
?
<
Nav
.
Link
onClick
=
{()
=>
handleLogout
()}
>
로그아웃
<
/Nav.Link
>
:
(
<>
<
Nav
.
Link
href
=
"
/signup
"
>
회원가입
<
/Nav.Link
>
<
Nav
.
Link
href
=
"
/login
"
>
로그인
<
/Nav.Link
>
<
/
>
)}
<
/Nav
>
<
/Navbar
>
<
/Col
>
<
Col
lg
=
{{
span
:
10
,
offset
:
1
}}
>
<
InputGroup
size
=
"
lg
"
lg
=
{
6
}
xs
=
{
4
}
fluid
>
<
FormControl
className
=
"
d-flex justify-content-lg-center
"
<
Container
className
=
"
vh-100 d-flex justify-content-md-center align-items-center
"
>
<
Col
md
=
{
6
}
lassName
=
"
d-flex justify-content-center
"
>
<
Row
style
=
{{
marginBottom
:
20
}}
>
<
Image
src
=
{
ohuh
}
/
>
<
/Row
>
<
Row
style
=
{{
marginBottom
:
500
}}
>
<
Form
className
=
"
vw-100
"
onSubmit
=
{
handleSubmit
}
>
<
InputGroup
>
<
Form
.
Control
size
=
"
lg
"
placeholder
=
"
검색어를 입력하세요.
"
aria
-
label
=
"
Large
"
aria
-
describedby
=
"
inputGroup-sizing-sm
"
onChange
=
{
handleChange
}
/
>
<
InputGroup
.
Append
>
<
Button
variant
=
"
outline-secondary
"
onClick
=
{
handleSubmit
}
>
검색
<
/Button
>
<
Button
type
=
'
submit
'
variant
=
"
outline-secondary
"
>
검색
<
/Button
>
<
/InputGroup.Append
>
<
/InputGroup
>
<
/Col
>
<
/Form
>
<
/Row
>
<
/Col
>
<
/Container
>
);
}
...
...
client/src/Components/Place.js
View file @
558b1436
...
...
@@ -18,7 +18,6 @@ function Place(props) {
getReview
();
},
[])
return
(
<
Modal
{...
props
}
size
=
"
xl
"
...
...
server/controllers/review.controller.js
View file @
558b1436
import
Review
from
'
../models/Review.js
'
import
cheerio
from
"
cheerio
"
;
import
express
from
'
express
'
;
import
request
from
'
request-promise
'
import
jschardet
from
'
jschardet
'
import
iconv
from
'
iconv
'
import
fs
from
'
fs
'
import
axios
from
'
axios
'
;
const
Iconv
=
iconv
.
Iconv
const
signup
=
async
(
req
,
res
)
=>
{
res
.
send
(
"
안녕하세요
"
)
}
const
search
=
async
(
req
,
res
)
=>
{
const
url
=
"
https://www.google.com/search?q=
"
+
encodeURI
(
req
.
params
.
search
)
+
"
+site%3Atistory.com
"
+
'
&page_no=1
'
reques
t
(
url
)
.
then
(
anyToUtf8
)
const
url
=
"
https://www.google.com/search?q=
"
+
encodeURI
(
req
.
params
.
search
)
+
"
+site%3Atistory.com&page_no=1
"
const
editUrl
=
/
(
http
(
s
)?
:
\/\/)([
a-z0-9
\w]
+
\.
*
)
+
[
a-z0-9
]{2,4}
/gi
axios
.
ge
t
(
url
)
//
.then(anyToUtf8)
.
then
((
html
)
=>
{
// fs.writeFileSync("googlez.txt", '\ufeff' + html, { encoding: 'utf8' });
let
$
=
cheerio
.
load
(
html
,
null
,
false
);
let
places
=
[]
$
(
'
.kCrYT
'
).
each
(
function
(
i
)
{
const
review
=
await
Review
.
findOne
({
link
:
$
(
this
).
find
(
'
a
'
).
attr
(
'
href
'
)
})
places
[
i
]
=
{
title
:
$
(
this
).
find
(
'
h3
'
).
text
(),
link
:
$
(
this
).
find
(
'
a
'
).
attr
(
'
href
'
),
summary
:
$
(
this
).
find
(
'
.s3v9rd
'
).
text
(),
let
$1
=
cheerio
.
load
(
html
.
data
);
let
reviews
=
[]
$1
(
'
.kCrYT
'
).
each
(
function
(
i
)
{
let
link
=
""
if
(
$1
(
this
).
find
(
'
a
'
).
attr
(
'
href
'
))
{
link
=
(
$1
(
this
).
find
(
'
a
'
).
attr
(
'
href
'
)).
match
(
editUrl
)
}
reviews
[
i
]
=
{
title
:
$1
(
this
).
find
(
'
h3
'
).
text
(),
link
:
link
,
summary
:
$1
(
this
).
find
(
'
.s3v9rd
'
).
text
(),
}
})
// reviews.forEach((review, i) => {
// axios.get(review.link)
// .then((html) => {
// let $2 = cheerio.load(html.data);
// $2('').each(function(i){
// review.content($2(this).find(''.text()))
// })
// })
// })
//
console.log(
places)
res
.
send
(
place
s
)
console
.
log
(
reviews
)
res
.
send
(
review
s
)
})
function
anyToUtf8
(
str
)
{
const
{
encoding
}
=
jschardet
.
detect
(
str
);
console
.
log
(
"
source encoding =
"
+
encoding
);
const
iconv
=
new
Iconv
(
encoding
,
"
utf-8//translit//ignore
"
);
const
{
encoding
}
=
jschardet
.
detect
(
str
);
// 웹페이지 문서의 인코딩 타입을 확인
const
iconv
=
new
Iconv
(
encoding
,
"
utf-8//translit//ignore
"
);
// euc-kr 인코딩변환
return
iconv
.
convert
(
str
).
toString
();
}
// try {
...
...
@@ -48,6 +54,5 @@ const search = async (req, res) => {
// }
}
const
export
default
{
signup
,
search
}
\ No newline at end of file
export
default
{
search
}
\ No newline at end of file
server/routes/review.routes.js
View file @
558b1436
...
...
@@ -4,7 +4,6 @@ import review from '../controllers/review.controller.js'
const
router
=
express
.
Router
()
router
.
route
(
'
/api/review/:search
'
)
.
post
(
review
.
signup
)
.
get
(
review
.
search
)
export
default
router
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment