Commit 0dfdacbe authored by baesangjune's avatar baesangjune
Browse files

.

parent 3515ba65
This diff is collapsed.
...@@ -19,6 +19,7 @@ function Place(props) { ...@@ -19,6 +19,7 @@ function Place(props) {
getReview(); getReview();
}, []) }, [])
return ( return (
<Modal {...props} <Modal {...props}
size="xl" size="xl"
......
...@@ -4,6 +4,7 @@ import ohuh from '../ohuh-sm.PNG'; ...@@ -4,6 +4,7 @@ import ohuh from '../ohuh-sm.PNG';
import Place from '../Components/Place'; import Place from '../Components/Place';
import { Container, Form, Row, Col, Card, Image, InputGroup, FormControl, Button, Pagination } from 'react-bootstrap'; import { Container, Form, Row, Col, Card, Image, InputGroup, FormControl, Button, Pagination } from 'react-bootstrap';
import Paginations from '../Components/Paginations'; import Paginations from '../Components/Paginations';
import axios from 'axios';
function Search(props) { function Search(props) {
const endPage = 10; const endPage = 10;
...@@ -13,7 +14,25 @@ function Search(props) { ...@@ -13,7 +14,25 @@ function Search(props) {
const [search, setSearch] = useState(props.location.state.id); const [search, setSearch] = useState(props.location.state.id);
const [mobile, setMobile] = useState(); const [mobile, setMobile] = useState();
const [reviews, setReviews] = useState([])
const getReview = () => {
console.log('search', search)
axios.get(`/api/search/${search}`)
.then(res => {
console.log("res.data22222222=", res.data)
setReviews(res.data)
})
.catch(err => {
console.log('search.err발생',err)
})
}
useEffect(() => { useEffect(() => {
getReview()
if (window.innerWidth < 960) { if (window.innerWidth < 960) {
setMobile(true) setMobile(true)
} else { } else {
...@@ -21,6 +40,11 @@ function Search(props) { ...@@ -21,6 +40,11 @@ function Search(props) {
} }
}, []); }, []);
const places = [{ const places = [{
name: "한라산(hallasan)", name: "한라산(hallasan)",
address: "제주 서귀포시 토평동 산15-1", address: "제주 서귀포시 토평동 산15-1",
......
This diff is collapsed.
import Place from '../models/Place.js' import Place from '../models/Place.js'
import cheerio from 'cheerio' import cheerio from 'cheerio'
import fs from 'fs'
const signup = async (req, res) => { import axios from 'axios';
const { name, email, password } = req.body
console.log(name, email, password)
try {
if (!isLength(name, { min: 3, max: 10 })) {
return res.status(422).send('Name must be 3-10 characters')
}
const newUser = await new User({
name,
email,
password
}).save()
console.log(newUser)
res.json(newUser)
} catch (error) {
console.log(error)
res.status(500).send('User signup error')
}
}
const search = async (req, res) => { const search = async (req, res) => {
// 정보들 크롤링 해오고 아래에 넣어주기
const url = "https://section.blog.naver.com/Search/Post.nhn?keyword=" + keyword
request(url, function (err, res, html) { // URL로부터 가져온 페이지 소스가 html이란 변수에 담긴다.
if (!err) {
var $ = cheerio.load(html);
// 블로그 title 정보 가져오기
$(".entry-title > a").each(function () {
var post = { "name": "", "address": "", "img": "" };
var data = $(this);
post["title"] = data.text();
post["link"] = data.attr("href");
});
}
})
// try {
// const newPlace = await new Place({
// name: req.params.search,
// address,
// img,
// }) console.log("여기까지 도착합니다.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
// } console.log(req.params.search)
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((response) => {
const html = response.data
fs.writeFileSync("googlez.txt", html, { encoding: 'utf8' });
let $1 = cheerio.load(html);
let reviews = []
$1('.kCrYT').each(function (i) {
if ($1(this).find('h3').text()) {
reviews[i] = { name: $1(this).find('h3').text(), link: ($1(this).find('a').attr('href')) }
} else if ($1(this).find('.s3v9rd').find('.s3v9rd').text()) {
reviews[i - 1] = { ...reviews[i - 1], address: $1(this).find('.s3v9rd').find('.s3v9rd').text() }
reviews = reviews.filter(e => e)
}
})
console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",reviews)
res.send(reviews)
})
} }
export default { signup, search } export default { search }
import Review from '../models/Review.js' import Review from '../models/Review.js'
import cheerio from "cheerio"; import cheerio from "cheerio";
import jschardet from 'jschardet' import jschardet from 'jschardet'
// import iconv from 'iconv'
import fs from 'fs' import fs from 'fs'
import axios from 'axios'; import axios from 'axios';
// const Iconv = iconv.Iconv
const search = async (req, res) => { const search = async (req, res) => {
const url = "https://www.google.com/search?q=" + encodeURI(req.params.search) + "+site%3Atistory.com&page_no=1" 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 const editUrl = /(http(s)?:\/\/)([a-z0-9\w]+\.*)+[a-z0-9]{2,4}/gi
axios.get(url) axios.get(url)
// .then(anyToUtf8)
.then((response) => { .then((response) => {
const html = response.data const html = response.data
fs.writeFileSync("googlez.txt", html, { encoding: 'utf8' }); fs.writeFileSync("googlez.txt", html, { encoding: 'utf8' });
...@@ -25,32 +22,10 @@ const search = async (req, res) => { ...@@ -25,32 +22,10 @@ const search = async (req, res) => {
reviews = reviews.filter(e => e) reviews = reviews.filter(e => e)
} }
}) })
// 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) console.log("*******************************************",reviews)
res.send(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,
// address,
// img,
// })
// }
} }
......
...@@ -4,7 +4,6 @@ import place from '../controllers/place.controller.js' ...@@ -4,7 +4,6 @@ import place from '../controllers/place.controller.js'
const router = express.Router() const router = express.Router()
router.route('/api/search/:search') router.route('/api/search/:search')
.post(place.signup)
.get(place.search) .get(place.search)
export default router export default router
\ No newline at end of file
import express from 'express' import express from 'express'
import connectDb from './utils/connectDb.js' import connectDb from './utils/connectDb.js'
// import placeRouter from './routes/place.routes.js' import placeRouter from './routes/place.routes.js'
import reviewRouter from './routes/review.routes.js' import reviewRouter from './routes/review.routes.js'
connectDb() connectDb()
...@@ -9,7 +9,7 @@ const app = express() ...@@ -9,7 +9,7 @@ const app = express()
app.use(express.json()) app.use(express.json())
// app.use(placeRouter) app.use(placeRouter)
app.use(reviewRouter) app.use(reviewRouter)
app.get('/', (req, res) => { app.get('/', (req, res) => {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment