Showing
2 changed files
with
65 additions
and
1 deletions
| ... | @@ -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> | ... | ... |
-
Please register or login to post a comment