From 9168132d37088e9803b05e21807cc9e9e6b6c0ad Mon Sep 17 00:00:00 2001 From: Chae Rin Date: Wed, 13 Jan 2021 13:06:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=9C=EC=97=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/Components/Place.js | 1 - client/src/Pages/App.js | 45 +++++++++---------- server/controllers/review.controller.js | 60 ++++++++++++------------- server/routes/review.routes.js | 1 - 4 files changed, 51 insertions(+), 56 deletions(-) diff --git a/client/src/Components/Place.js b/client/src/Components/Place.js index 7ea3d63..896a8f9 100644 --- a/client/src/Components/Place.js +++ b/client/src/Components/Place.js @@ -18,7 +18,6 @@ function Place(props) { getReview(); }, []) - return ( - - - - - - - - - - - - - + + + + + + +
+ + + + + + +
+
+
- ); } diff --git a/server/controllers/review.controller.js b/server/controllers/review.controller.js index 734d88d..6b5e652 100644 --- a/server/controllers/review.controller.js +++ b/server/controllers/review.controller.js @@ -1,48 +1,47 @@ 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' - - request(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.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) { - const review = await Review.findOne({ link: $(this).find('a').attr('href') }) - if (!user) { - const newReview = await new Review({ - name, - email, - password: hash - }).save() + 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) } - places[i] = { - title: $(this).find('h3').text(), - link: $(this).find('a').attr('href'), - summary: $(this).find('.s3v9rd').text(), + 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(places) + console.log(reviews) + res.send(reviews) }) 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 { @@ -55,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 diff --git a/server/routes/review.routes.js b/server/routes/review.routes.js index 07d9355..7a9631b 100644 --- a/server/routes/review.routes.js +++ b/server/routes/review.routes.js @@ -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 -- GitLab