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
32794545
Commit
32794545
authored
Jan 25, 2021
by
Lee SeoYeon
Browse files
Merge remote-tracking branch 'origin/cherry' into lsy
parents
c48ea233
b4b32464
Changes
2
Show whitespace changes
Inline
Side-by-side
client/src/Pages/Search.js
View file @
32794545
...
...
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
import
{
Link
,
Redirect
}
from
'
react-router-dom
'
;
import
ohuh
from
'
../ohuh-sm.PNG
'
;
import
Place
from
'
../Components/Place
'
;
import
{
Container
,
Form
,
Row
,
Col
,
Card
,
Image
,
InputGroup
,
FormControl
,
Button
}
from
'
react-bootstrap
'
;
import
{
Container
,
Form
,
Row
,
Col
,
Card
,
Image
,
InputGroup
,
FormControl
,
Button
}
from
'
react-bootstrap
'
;
import
Paginations
from
'
../Components/Paginations
'
;
import
axios
from
'
axios
'
;
import
queryString
from
'
query-string
'
...
...
@@ -17,6 +17,7 @@ function Search(props) {
const
[
place
,
setPlace
]
=
useState
([{
name
:
""
,
category
:
""
,
address
:
""
}])
const
[
imgUrl
,
setImgUrl
]
=
useState
([])
const
[
association
,
setAssociation
]
=
useState
([])
const
getImg
=
()
=>
{
axios
.
get
(
`/api/search/imges?keyword=
${
search
}
`
)
.
then
(
res
=>
{
...
...
@@ -39,7 +40,7 @@ function Search(props) {
})
}
const
getAssociation
=
()
=>
{
const
getAssociation
=
()
=>
{
axios
.
get
(
`/api/search/association?keyword=
${
search
}
`
)
.
then
(
res
=>
{
console
.
log
(
"
Associations =
"
,
res
.
data
)
...
...
@@ -61,11 +62,13 @@ function Search(props) {
}
else
{
setMobile
(
false
)
}
},
[]);
if
(
state
)
{
props
.
history
.
push
(
'
/search?keyword=
'
+
search
)
setState
(
false
)
console
.
log
(
"
search야
"
,
search
)
}
},
[
search
]);
const
places
=
[{
...
...
@@ -91,10 +94,14 @@ function Search(props) {
}]
if
(
state
!==
false
)
{
return
<
Redirect
to
=
{{
pathname
:
`/search?keyword=
${
search
}
`
,
state
:
{
id
:
search
},
}}
/>
;
// console.log(queryString.parse(props.location.search))
// = {keyword:search}
// return <Redirect to={{
// pathname: `/search?keyword=${search}`,
// state: { id: search },
// }} />;
// history.pushState(null, null, "?"+queryParams.toString());
// return <Redirect to={`/search?keyword=${search}`} />;
}
const
handlePage
=
(
num
)
=>
{
...
...
@@ -107,6 +114,7 @@ function Search(props) {
}
const
handleSubmit
=
(
e
)
=>
{
// e.preventDefault()
setState
(
true
);
}
...
...
@@ -158,7 +166,7 @@ function Search(props) {
showArr
[
index
]
=
true
setShowSet
(
showArr
)
}}
>
{
place
.
name
}
자세히
살펴보기
<
/Button
>
<
Place
search
=
{
place
}
index
=
{
index
}
show
=
{
showSet
[
index
]}
onHide
=
{()
=>
setShowSet
([
false
,
false
,
false
,
false
])}
/
>
<
Place
place
=
{
place
}
index
=
{
index
}
show
=
{
showSet
[
index
]}
onHide
=
{()
=>
setShowSet
([
false
,
false
,
false
,
false
])}
/
>
<
/Card.Body
>
<
/Card
>
<
/Col
>
...
...
server/controllers/place.controller.js
View file @
32794545
...
...
@@ -5,31 +5,45 @@ import axios from 'axios';
const
searchPlace
=
async
(
req
,
res
)
=>
{
let
DuplicateCheckPlace
=
await
Places
.
findOne
({
name
:
req
.
query
.
keyword
})
if
(
DuplicateCheckPlace
)
{
res
.
send
(
DuplicateCheckPlace
)
console
.
log
(
"
11111111111111111111111Place################ 기존플레이스줄력중
"
)
}
else
{
console
.
log
(
"
2222222222222222222222222222222222222222222222222222222
"
)
const
url
=
"
https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=
"
+
encodeURI
(
req
.
query
.
keyword
)
const
editUrl
=
/
(
http
(
s
)?
:
\/\/)([
a-z0-9
\w]
+
\.
*
)
+
[
a-z0-9
]{2,4}
/gi
axios
.
get
(
url
)
.
then
(
async
(
response
)
=>
{
const
html
=
response
.
data
// console.log(html)
fs
.
writeFileSync
(
"
googleReview
"
,
html
,
{
encoding
:
'
utf-8
'
})
// fs.writeFileSync("googleReview", html, { encoding: 'utf-8' })
let
$1
=
cheerio
.
load
(
html
);
let
places
=
{}
$1
(
'
.ct_box_area
'
).
each
(
function
(
i
)
{
// console.log($1('.biz_name').text())
// console.log($1('.category').text())
// console.log($1('.addr').text())
// console.log($1('.t?ime highlight').text())
places
[
i
]
=
{
name
:
$1
(
'
.biz_name
'
).
text
(),
category
:
$1
(
'
.category
'
).
text
(),
address
:
$1
(
'
.addr
'
).
text
()
}
})
// 값이 비어있거나 에러가 생겼을 때를 대비해 try catch를 해야함
const
newPlaces
=
await
new
Places
(
places
[
0
]
).
save
()
res
.
send
(
places
)
})
}
}
const
searchImg
=
async
(
req
,
res
)
=>
{
let
DuplicateCheckImg
=
await
Places
.
findOne
({
name
:
req
.
query
.
keyword
})
if
(
DuplicateCheckImg
)
{
if
(
DuplicateCheckImg
.
img
!==
"
https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd
"
)
{
res
.
send
(
DuplicateCheckImg
)
console
.
log
(
"
333333333333333333333333333IMG@@@@@@@@@@@@@@@@@@@ 기존이미지줄력중
"
)
}
else
if
(
DuplicateCheckImg
.
img
===
"
https://t1.daumcdn.net/thumb/R600x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fqna%2Fimage%2F4b035cdf8372d67108f7e8d339660479dfb41bbd
"
)
{
console
.
log
(
"
4444444444444444444444444444444444444444444444444
"
)
const
imgUrl
=
"
https://www.google.com/search?q=
"
+
encodeURI
(
req
.
query
.
keyword
)
+
"
+site:tistory.com/&sxsrf=ALeKk023Dv08KQDodRmpB5222lQuzw2Vaw:1610612821100&source=lnms&tbm=isch
"
axios
.
get
(
imgUrl
)
...
...
@@ -38,54 +52,49 @@ const searchImg = async (req, res) => {
let
name
=
req
.
query
.
keyword
let
$1
=
cheerio
.
load
(
html
);
axios
.
get
(
imgUrl
)
.
then
(
async
(
response
)
=>
{
const
html
=
response
.
data
let
name
=
req
.
params
.
search
let
$1
=
cheerio
.
load
(
html
);
let
images
=
$1
(
'
.RAyV4b
'
).
find
(
'
img
'
).
attr
(
'
src
'
)
//사진만 업데이트
let
Place
=
await
Places
.
findOne
({
name
:
req
.
params
.
search
})
let
Place
=
await
Places
.
findOne
({
name
:
req
.
query
.
keyword
})
Place
.
times
.
push
(
new
Date
().
toLocaleString
())
await
Places
.
updateOne
({
name
:
req
.
params
.
search
},
{
img
:
images
,
times
:
Place
.
times
})
const
newPlaces
=
await
new
Places
(
).
save
()
await
Places
.
updateOne
({
name
:
req
.
query
.
keyword
},
{
img
:
images
,
times
:
Place
.
times
})
res
.
send
(
images
)
})
//사진만 업데이트
let
Place
=
await
Places
.
findOne
({
name
:
req
.
query
.
keyword
}
)
Place
.
times
.
push
(
new
Date
().
toLocaleString
())
await
Places
.
updateOne
({
name
:
req
.
query
.
keyword
},
{
img
:
images
,
times
:
Place
.
times
})
}
else
{
console
.
log
(
"
IMG에러
"
)
}
}
}
)
}
const
searchAssociation
=
async
(
req
,
res
)
=>
{
let
Place
=
await
Places
.
findOne
({
name
:
req
.
query
.
keyword
})
// if (!Place) {
// res.send([])
// }
if
(
!
Place
)
{
res
.
s
end
([]
)
res
.
s
tatus
(
404
).
send
({
error
:
"
Place.address is null
"
}
)
}
else
{
let
addresse
=
Place
.
address
.
split
(
'
'
)[
0
]
// let AssociationsId = []
let
AssociationsId
=
[]
let
addressPlaces
=
new
RegExp
(
`
${
addresse
}
`
)
console
.
log
(
"
여기보세요
"
,
addressPlaces
)
let
responsePlaces
=
await
Places
.
find
({
address
:
addressPlaces
})
res
.
send
(
responsePlaces
)
}
// responsePlaces.map(Association => {
// AssociationsId.push(Association._id)
// })
// console.log("Associations = ", Associations)
// res.send(AssociationsId)
}
}
export
default
{
searchImg
,
searchPlace
,
searchAssociation
}
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