이혜리

인기순위-여자

...@@ -6,6 +6,7 @@ var mysql = require('mysql'); ...@@ -6,6 +6,7 @@ var mysql = require('mysql');
6 var client = require('cheerio-httpcli'); 6 var client = require('cheerio-httpcli');
7 var passport = require('passport'), 7 var passport = require('passport'),
8 KakaoStrategy = require('passport-kakao').Strategy; 8 KakaoStrategy = require('passport-kakao').Strategy;
9 +const puppeteer = require("puppeteer");
9 10
10 var connection = mysql.createConnection({ 11 var connection = mysql.createConnection({
11 host : 'localhost', 12 host : 'localhost',
...@@ -283,11 +284,47 @@ function getAllToons() { ...@@ -283,11 +284,47 @@ function getAllToons() {
283 allWebtoons = allWebtoonList; 284 allWebtoons = allWebtoonList;
284 }; 285 };
285 286
287 +popularWWebtoons = new Array();
288 +function getPopularToons() {
289 + var pplWebtoonList = new Array();
290 + puppeteer.launch().then(async browser => {
291 + let page = await browser.newPage();
292 + await page.goto("https://comic.naver.com/index.nhn", { waitUntil: "networkidle2" });
293 +
294 + page.waitForNavigation(), // 해당 페이지의 탐색이 완료되면 클릭 이벤트를 실행
295 + await page.click("#recommandWebtoonRankWTabOver > a"); // 클릭이벤트를 실행
296 +
297 + let ehList = await page.$$("div.thumb6");
298 + for (let eh of ehList) {
299 + let webtoon_link = await eh.$eval('a', function (el) {
300 + return el.getAttribute('href');
301 + });
302 + let thumb_link = await eh.$eval('a img', function (el) {
303 + return el.getAttribute('src');
304 + });
305 + let title = await eh.$eval('a', function (el) {
306 + return el.getAttribute('title');
307 + });
308 + var pplObj= {
309 + thumb_link : thumb_link,
310 + webtoon_link : "http://comic.naver.com" + webtoon_link,
311 + title : title
312 + };
313 + pplWebtoonList.push(pplObj);
314 + }
315 + browser.close();
316 + popularWWebtoons = pplWebtoonList;
317 + });
318 +
319 +}
320 +
286 getAllToons(); 321 getAllToons();
287 //처음 한번 수행 322 //처음 한번 수행
288 setInterval(getAllToons,5*60*1000); 323 setInterval(getAllToons,5*60*1000);
289 //5분에 한번 수행 324 //5분에 한번 수행
290 325
326 +getPopularToons();
327 +
291 /* GET home page. */ 328 /* GET home page. */
292 router.get('/', 329 router.get('/',
293 function(req,res,next){ 330 function(req,res,next){
...@@ -298,7 +335,8 @@ router.get('/', ...@@ -298,7 +335,8 @@ router.get('/',
298 console.log("(!)로그인세션 없음"); 335 console.log("(!)로그인세션 없음");
299 res.render('index',{ 336 res.render('index',{
300 title: "니툰내툰", 337 title: "니툰내툰",
301 - list: allWebtoons 338 + list: allWebtoons,
339 + pplWList : popularWWebtoons
302 }); 340 });
303 } 341 }
304 }); 342 });
......
...@@ -162,6 +162,32 @@ ...@@ -162,6 +162,32 @@
162 </a> 162 </a>
163 163
164 <div id="Naver_webtoons" style = "display:none"> 164 <div id="Naver_webtoons" style = "display:none">
165 + </br>
166 + <div class="Pupular" style= "border: 1px solid; padding: 12px; width:650px; height:330px; margin:auto;">
167 + <table>
168 + <p>20대 실시간 인기순위</p>
169 + <tr>
170 + <th align = "center"> 여자</th>
171 + </tr>
172 + <tr>
173 + <% let i = 1;
174 + for(toon in pplWList) {
175 + %>
176 +
177 + <th><%= i%></th>
178 + <th>
179 + <a href="<%= pplWList[toon].webtoon_link %>">
180 + <img alt="img" width="43" height="50" src="<%= pplWList[toon].thumb_link %>" />
181 + </a>
182 + <%= pplWList[toon].title %>
183 + </th>
184 + </tr>
185 + <% i += 1; %>
186 + <% } %>
187 + </table>
188 + </div>
189 +
190 +
165 <a onclick="Naver_webtoons.style.display=(Naver_webtoons.style.display=='none') "> 191 <a onclick="Naver_webtoons.style.display=(Naver_webtoons.style.display=='none') ">
166 <button>별점순</button> 192 <button>별점순</button>
167 </a> 193 </a>
......