이혜인

modify getting playingmovielist

1 const chatbot = require("./app.js"); 1 const chatbot = require("./app.js");
2 -
3 const request = require('request'); 2 const request = require('request');
4 const cheerio = require('cheerio'); 3 const cheerio = require('cheerio');
5 const puppeteer = require('puppeteer'); 4 const puppeteer = require('puppeteer');
6 -
7 require('chromedriver'); 5 require('chromedriver');
8 const {Builder,until} = require('selenium-webdriver'); //모듈 불러오기 6 const {Builder,until} = require('selenium-webdriver'); //모듈 불러오기
9 var webdriver = require('selenium-webdriver'); 7 var webdriver = require('selenium-webdriver');
10 var By = webdriver.By; 8 var By = webdriver.By;
11 const chrome = require('selenium-webdriver/chrome');//크롬 사용시 9 const chrome = require('selenium-webdriver/chrome');//크롬 사용시
12 -
13 const async = require('async') 10 const async = require('async')
14 let express = require('express'); 11 let express = require('express');
15 let app = express(); 12 let app = express();
...@@ -17,27 +14,20 @@ let bodyParser = require('body-parser'); ...@@ -17,27 +14,20 @@ let bodyParser = require('body-parser');
17 const { timeout } = require('async'); 14 const { timeout } = require('async');
18 app.use(bodyParser.urlencoded({ extended: false })); 15 app.use(bodyParser.urlencoded({ extended: false }));
19 app.use(bodyParser.json()); 16 app.use(bodyParser.json());
20 -
21 -
22 const booking_url = "https://megabox.co.kr/booking?"; 17 const booking_url = "https://megabox.co.kr/booking?";
23 exports.booking_url = booking_url; 18 exports.booking_url = booking_url;
24 const rate_url = "https://www.megabox.co.kr/movie"; 19 const rate_url = "https://www.megabox.co.kr/movie";
25 -
26 let r =0; 20 let r =0;
27 let movie_data = []; 21 let movie_data = [];
28 exports.movie_data = movie_data; 22 exports.movie_data = movie_data;
29 let location_data = []; 23 let location_data = [];
30 exports.location_data = location_data; 24 exports.location_data = location_data;
31 let index = 0; 25 let index = 0;
32 -
33 -
34 exports.init = ()=>{async.waterfall([//for 동기적 처리 26 exports.init = ()=>{async.waterfall([//for 동기적 처리
35 async () => { 27 async () => {
36 -
37 const driver = new webdriver.Builder().forBrowser('chrome').setChromeOptions(new chrome.Options().headless()).build();// 28 const driver = new webdriver.Builder().forBrowser('chrome').setChromeOptions(new chrome.Options().headless()).build();//
38 driver.get(booking_url); 29 driver.get(booking_url);
39 driver.switchTo().frame(0)//frameBokdMBooking 프레임 가져옴 30 driver.switchTo().frame(0)//frameBokdMBooking 프레임 가져옴
40 -
41 let seoul = await driver.wait(until.elementsLocated(By.css('#mCSB_4_container>ul>li>#btn'))); 31 let seoul = await driver.wait(until.elementsLocated(By.css('#mCSB_4_container>ul>li>#btn')));
42 let Gyeonggi = await driver.wait(until.elementsLocated(By.css('#mCSB_5_container>ul>li>#btn'))); 32 let Gyeonggi = await driver.wait(until.elementsLocated(By.css('#mCSB_5_container>ul>li>#btn')));
43 const Incheon = await driver.wait(until.elementsLocated(By.css('#mCSB_6_container>ul>li>#btn'))); 33 const Incheon = await driver.wait(until.elementsLocated(By.css('#mCSB_6_container>ul>li>#btn')));
...@@ -50,7 +40,7 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리 ...@@ -50,7 +40,7 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리
50 for (item of location_list[i]) { 40 for (item of location_list[i]) {
51 location_data[index++] = { 41 location_data[index++] = {
52 'LocationName':await item.getAttribute("brch-nm"), 42 'LocationName':await item.getAttribute("brch-nm"),
53 - 'LocationNUm' : await item.getAttribute("brch-no") 43 + 'LocationNum' : await item.getAttribute("brch-no")
54 } 44 }
55 // let location_name = await item.getAttribute("brch-nm"); 45 // let location_name = await item.getAttribute("brch-nm");
56 // let location_num = await item.getAttribute("brch-no"); 46 // let location_num = await item.getAttribute("brch-no");
...@@ -59,14 +49,12 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리 ...@@ -59,14 +49,12 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리
59 // location_data[index++] = obj; 49 // location_data[index++] = obj;
60 } 50 }
61 } 51 }
62 -
63 let movie_list = await driver.wait(until.elementsLocated(By.css('#mCSB_1_container>ul>li>.btn'))); 52 let movie_list = await driver.wait(until.elementsLocated(By.css('#mCSB_1_container>ul>li>.btn')));
64 r = 0; 53 r = 0;
65 for (item of movie_list) { 54 for (item of movie_list) {
66 //Using getAttribute to get the data 55 //Using getAttribute to get the data
67 movie_data[r++] = { 56 movie_data[r++] = {
68 'rank' : r, 57 'rank' : r,
69 -
70 'title' : await item.getAttribute("movie-nm"), 58 'title' : await item.getAttribute("movie-nm"),
71 'movie_num':await item.getAttribute("movie-no"), 59 'movie_num':await item.getAttribute("movie-no"),
72 } 60 }
...@@ -75,9 +63,7 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리 ...@@ -75,9 +63,7 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리
75 driver.close(); 63 driver.close();
76 64
77 }, 65 },
78 -
79 async () => { 66 async () => {
80 -
81 r = 0; 67 r = 0;
82 const browser = await puppeteer.launch({ 68 const browser = await puppeteer.launch({
83 headless: true 69 headless: true
...@@ -101,16 +87,16 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리 ...@@ -101,16 +87,16 @@ exports.init = ()=>{async.waterfall([//for 동기적 처리
101 movie_data[r++]['rate'] = '예매율 0%'; 87 movie_data[r++]['rate'] = '예매율 0%';
102 } 88 }
103 } 89 }
104 - console.log("completed") 90 +
105 browser.close(); 91 browser.close();
92 + console.log("Comepleted!");
106 }, 93 },
107 94
108 ])} 95 ])}
109 96
110 - 97 +let appdriver;
111 -const appdriver = new webdriver.Builder().forBrowser('chrome').setChromeOptions(new chrome.Options().headless()).build();
112 -
113 exports.using_PlayingMovieURL = async(PlayingMovieURL) => { 98 exports.using_PlayingMovieURL = async(PlayingMovieURL) => {
99 + appdriver = new webdriver.Builder().forBrowser('chrome').setChromeOptions(new chrome.Options().headless()).build();
114 appdriver.get(PlayingMovieURL); 100 appdriver.get(PlayingMovieURL);
115 //appdriver.switchTo().frame(0) 101 //appdriver.switchTo().frame(0)
116 //frameBokdMBooking 프레임 가져옴 102 //frameBokdMBooking 프레임 가져옴
...@@ -118,24 +104,12 @@ exports.using_PlayingMovieURL = async(PlayingMovieURL) => { ...@@ -118,24 +104,12 @@ exports.using_PlayingMovieURL = async(PlayingMovieURL) => {
118 exports.geting_PlayingMovie= async() => { 104 exports.geting_PlayingMovie= async() => {
119 let movie_list = await appdriver.wait(until.elementsLocated(By.css('#mCSB_1_container>ul>li>.btn'))); 105 let movie_list = await appdriver.wait(until.elementsLocated(By.css('#mCSB_1_container>ul>li>.btn')));
120 let n = 0; 106 let n = 0;
107 + console.log(movie_list);
121 for (item of movie_list) { 108 for (item of movie_list) {
122 - movie_data[n++]['running'] = await item.getAttribute('form-at') 109 + console.log(item.getAttribute('form-at'))
110 + movie_data[n++]['running'] = await item.getAttribute('form-at');
123 } 111 }
124 - console.log("completed") 112 + console.log("Completed get Running");
125 -
126 } 113 }
127 114
128 -app.get('/Megabox/GetPlayingMovie', async(req, res, next) => {//영화 상영 여부 객체에 넣음
129 -
130 - // let movie_list = await appdriver.wait(until.elementsLocated(By.css('#mCSB_1_container>ul>li>.btn')));
131 - // let n = 0;
132 - // for (item of movie_list) {
133 - // movie_data[n++]['running'] = await item.getAttribute('form-at')
134 - // }
135 - using_PlayingMovieURL('https://megabox.co.kr/booking?brchNo1=4451&playDe=20220606');
136 - geting_PlayingMovie();
137 -
138 - res.send(PlayingMovieList);
139 -})
140 -
141 -app.listen(8000);
...\ No newline at end of file ...\ No newline at end of file
115 +app.listen(5000);
...\ No newline at end of file ...\ No newline at end of file
......
This diff is collapsed. Click to expand it.
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
15 "cheerio": "^1.0.0-rc.11", 15 "cheerio": "^1.0.0-rc.11",
16 "chromedriver": "^101.0.0", 16 "chromedriver": "^101.0.0",
17 "express": "^4.18.1", 17 "express": "^4.18.1",
18 + "express-async-handler": "^1.2.0",
18 "puppeteer": "^14.1.1", 19 "puppeteer": "^14.1.1",
19 "selenium-webdriver": "^4.1.2" 20 "selenium-webdriver": "^4.1.2"
20 } 21 }
......