Showing
1 changed file
with
69 additions
and
17 deletions
| ... | @@ -8,8 +8,15 @@ var By = webdriver.By; | ... | @@ -8,8 +8,15 @@ var By = webdriver.By; |
| 8 | const chrome = require('selenium-webdriver/chrome');//크롬 사용시 | 8 | const chrome = require('selenium-webdriver/chrome');//크롬 사용시 |
| 9 | 9 | ||
| 10 | const async = require('async') | 10 | const async = require('async') |
| 11 | +let express = require('express'); | ||
| 12 | +let app = express(); | ||
| 13 | +let bodyParser = require('body-parser'); | ||
| 14 | +const { timeout } = require('async'); | ||
| 15 | +app.use(bodyParser.urlencoded({ extended: false })); | ||
| 16 | +app.use(bodyParser.json()); | ||
| 11 | 17 | ||
| 12 | -let booking_url = "https://megabox.co.kr/booking"; | 18 | + |
| 19 | +const booking_url = "https://megabox.co.kr/booking"; | ||
| 13 | const rate_url = "https://www.megabox.co.kr/movie"; | 20 | const rate_url = "https://www.megabox.co.kr/movie"; |
| 14 | 21 | ||
| 15 | let r =0; | 22 | let r =0; |
| ... | @@ -17,13 +24,13 @@ let movie_data = []; | ... | @@ -17,13 +24,13 @@ let movie_data = []; |
| 17 | let location_data = []; | 24 | let location_data = []; |
| 18 | let index = 0; | 25 | let index = 0; |
| 19 | 26 | ||
| 20 | -async.waterfall([ | ||
| 21 | - async () => { | ||
| 22 | 27 | ||
| 23 | - const driver = new webdriver.Builder().forBrowser('chrome').build();//.setChromeOptions(new chrome.Options().headless()) | 28 | +async.waterfall([//for 동기적 처리 |
| 29 | + async () => { | ||
| 30 | + const driver = new webdriver.Builder().forBrowser('chrome').setChromeOptions(new chrome.Options().headless()).build();// | ||
| 24 | driver.get(booking_url); | 31 | driver.get(booking_url); |
| 25 | driver.switchTo().frame(0)//frameBokdMBooking 프레임 가져옴 | 32 | driver.switchTo().frame(0)//frameBokdMBooking 프레임 가져옴 |
| 26 | - | 33 | + |
| 27 | let seoul = await driver.wait(until.elementsLocated(By.css('#mCSB_4_container>ul>li>#btn'))); | 34 | let seoul = await driver.wait(until.elementsLocated(By.css('#mCSB_4_container>ul>li>#btn'))); |
| 28 | let Gyeonggi = await driver.wait(until.elementsLocated(By.css('#mCSB_5_container>ul>li>#btn'))); | 35 | let Gyeonggi = await driver.wait(until.elementsLocated(By.css('#mCSB_5_container>ul>li>#btn'))); |
| 29 | const Incheon = await driver.wait(until.elementsLocated(By.css('#mCSB_6_container>ul>li>#btn'))); | 36 | const Incheon = await driver.wait(until.elementsLocated(By.css('#mCSB_6_container>ul>li>#btn'))); |
| ... | @@ -34,12 +41,15 @@ async.waterfall([ | ... | @@ -34,12 +41,15 @@ async.waterfall([ |
| 34 | const location_list = [seoul, Gyeonggi, Incheon, DCS, BDG, GJ, Gangwon]// | 41 | const location_list = [seoul, Gyeonggi, Incheon, DCS, BDG, GJ, Gangwon]// |
| 35 | for(let i = 0; i < location_list.length; i++){ | 42 | for(let i = 0; i < location_list.length; i++){ |
| 36 | for (item of location_list[i]) { | 43 | for (item of location_list[i]) { |
| 37 | - let location_name = await item.getAttribute("brch-nm"); | 44 | + location_data[index++] = { |
| 38 | - let location_num = await item.getAttribute("brch-no"); | 45 | + 'LocationName':await item.getAttribute("brch-nm"), |
| 39 | - let obj = {}; | 46 | + 'LocationNUm' : await item.getAttribute("brch-no") |
| 40 | - obj[location_name]= location_num | 47 | + } |
| 41 | - console.log(obj) | 48 | + // let location_name = await item.getAttribute("brch-nm"); |
| 42 | - location_data[index++] = obj; | 49 | + // let location_num = await item.getAttribute("brch-no"); |
| 50 | + // let obj = {}; | ||
| 51 | + // obj[location_name]= location_num | ||
| 52 | + // location_data[index++] = obj; | ||
| 43 | 53 | ||
| 44 | } | 54 | } |
| 45 | } | 55 | } |
| ... | @@ -52,7 +62,6 @@ async.waterfall([ | ... | @@ -52,7 +62,6 @@ async.waterfall([ |
| 52 | 'rank' : r, | 62 | 'rank' : r, |
| 53 | 'title' : await item.getAttribute("movie-nm"), | 63 | 'title' : await item.getAttribute("movie-nm"), |
| 54 | 'movie_num':await item.getAttribute("movie-no"), | 64 | 'movie_num':await item.getAttribute("movie-no"), |
| 55 | - 'running':await item.getAttribute("form-at"), | ||
| 56 | } | 65 | } |
| 57 | } | 66 | } |
| 58 | 67 | ||
| ... | @@ -81,13 +90,56 @@ async.waterfall([ | ... | @@ -81,13 +90,56 @@ async.waterfall([ |
| 81 | } | 90 | } |
| 82 | }); | 91 | }); |
| 83 | for(i of movie_data){ | 92 | for(i of movie_data){ |
| 84 | - if(Object.keys(i).length==4){ | 93 | + if(Object.keys(i).length==3){ |
| 85 | movie_data[r++]['rate'] = '예매율 0%'; | 94 | movie_data[r++]['rate'] = '예매율 0%'; |
| 86 | } | 95 | } |
| 87 | } | 96 | } |
| 88 | - for(i of location_data){ | 97 | + |
| 89 | - console.log(i['동탄']) | ||
| 90 | - } | ||
| 91 | browser.close(); | 98 | browser.close(); |
| 92 | - } | 99 | + }, |
| 100 | + | ||
| 93 | ]) | 101 | ]) |
| 102 | + | ||
| 103 | + | ||
| 104 | +let userData = { | ||
| 105 | + 'Date': '', | ||
| 106 | + 'location':'' | ||
| 107 | +}; | ||
| 108 | +// const _sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay)); | ||
| 109 | +app.get('/Megabox', (req, res) => { | ||
| 110 | + | ||
| 111 | + res.send(movie_data); | ||
| 112 | + | ||
| 113 | +}) | ||
| 114 | + | ||
| 115 | +const appdriver = new webdriver.Builder().forBrowser('chrome').setChromeOptions(new chrome.Options().headless()).build();//.setChromeOptions(new chrome.Options().headless()) | ||
| 116 | + | ||
| 117 | +app.post('/Megabox', (req, res) => {//사용자에게 Date와 location(영화관 장소) 받아옴 | ||
| 118 | + userData['Date'] = req.body.Date; | ||
| 119 | + for(i of location_data){ | ||
| 120 | + if(i['LocationName'] == req.body.location){ | ||
| 121 | + userData['location']=i['LocationNUm']; | ||
| 122 | + break; | ||
| 123 | + } | ||
| 124 | + } | ||
| 125 | + | ||
| 126 | + let PlayingMovieURL = booking_url + '?brchNo1='+userData['location']+'&playDe='+userData['Date'];//사용자 정보 바탕으로 해당 일자 영화관 영화 상영 여부 확인 | ||
| 127 | + | ||
| 128 | + appdriver.get(PlayingMovieURL); | ||
| 129 | + appdriver.switchTo().frame(0)//frameBokdMBooking 프레임 가져옴 | ||
| 130 | + res.send(movie_data); | ||
| 131 | + | ||
| 132 | +}) | ||
| 133 | + | ||
| 134 | +app.get('/Megabox/GetPlayingMovie', async(req, res, next) => {//영화 상영 여부 객체에 넣음 | ||
| 135 | + | ||
| 136 | + let movie_list = await appdriver.wait(until.elementsLocated(By.css('#mCSB_1_container>ul>li>.btn'))); | ||
| 137 | + let n = 0; | ||
| 138 | + for (item of movie_list) { | ||
| 139 | + movie_data[n++]['running'] = await item.getAttribute('form-at') | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + res.send(movie_data); | ||
| 143 | +}) | ||
| 144 | + | ||
| 145 | +app.listen(23023); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment