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
4223171e
Commit
4223171e
authored
Jan 13, 2021
by
baesangjune
Browse files
Merge remote-tracking branch 'origin/cherry' into Sangjune
parents
380f73b7
9168132d
Changes
4
Show whitespace changes
Inline
Side-by-side
client/src/Components/Place.js
View file @
4223171e
...
...
@@ -19,7 +19,6 @@ function Place(props) {
getReview
();
},
[])
return
(
<
Modal
{...
props
}
size
=
"
xl
"
...
...
client/src/Pages/App.js
View file @
4223171e
...
...
@@ -22,31 +22,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
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
>
);
}
...
...
server/controllers/review.controller.js
View file @
4223171e
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
'
// const Iconv = iconv.Iconv
const
signup
=
async
(
req
,
res
)
=>
{
res
.
send
(
"
안녕하세요
"
)
}
import
axios
from
'
axios
'
;
const
Iconv
=
iconv
.
Iconv
const
search
=
async
(
req
,
res
)
=>
{
// console.log(req.params.search)
// console.log("req", req)
const
url
=
"
https://www.google.com/search?q=%ED%95%9C%EB%9D%BC%EC%82%B0%20site%3Atistory.com&oq=tistory&aqs=chrome..69i57j0l4j69i60l3.1746j0j4&sourceid=chrome&ie=UTF-8&ved=2ahUKEwis_bSFz4buAhWVdXAKHU0tBaoQ2wF6BAgIEAE&ei=T1D1X-yZD5XrwQPN2pTQCg
"
// const url=
request
(
url
)
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
.
get
(
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
)
{
places
[
i
]
=
{
title
:
$
(
this
).
find
(
'
h3
'
).
text
(),
link
:
$
(
this
).
find
(
'
a
'
).
attr
(
'
href
'
),
summary
:
$
(
this
).
find
(
'
.s3v9rd
'
).
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
(),
}
})
console
.
log
(
"
places***********************************************
"
,
places
)
res
.
send
(
places
)
})
// function anyToUtf8(str) {
// const { encoding } = jschardet.detect(str);
// console.log("source encoding = " + encoding);
// const iconv = new Iconv(encoding, "utf-8//translit//ignore");
// return iconv.convert(str).toString();
// }
// 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
(
reviews
)
res
.
send
(
reviews
)
})
function
anyToUtf8
(
str
)
{
const
{
encoding
}
=
jschardet
.
detect
(
str
);
// 웹페이지 문서의 인코딩 타입을 확인
const
iconv
=
new
Iconv
(
encoding
,
"
utf-8//translit//ignore
"
);
// euc-kr 인코딩변환
return
iconv
.
convert
(
str
).
toString
();
}
// try {
// const newPlace = await new Place({
// name: req.params.search,
...
...
@@ -51,4 +54,5 @@ const search = async (req, res) => {
// }
}
export
default
{
signup
,
search
}
export
default
{
search
}
server/routes/review.routes.js
View file @
4223171e
...
...
@@ -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