app.js
4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
let express = require('express');
let app = express();
let request = require('request');
const asyncHandler = require('express-async-handler')
const { response } = require('express');
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');
const { textContent } = require('domutils');
//https://www.lottecinema.co.kr/NLCHS/Ticketing?movieCd=18632&movieName=범죄도시%202&screenCd=1|1|1009&screenName=김포공항&releaseDate=2022-05-18
let movieData = [];
let theaterData = [];
function getToday(){
var date = new Date();
var year = date.getFullYear();
var month = ("0" + (1 + date.getMonth())).slice(-2);
var day = ("0" + date.getDate()).slice(-2);
return year + "-" + month + "-" + day;
}
//console.log(getToday());
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 수집하고자 하는 URL을 입력
await page.goto('https://www.lottecinema.co.kr/NLCHS/Movie/List?flag=1');
let content = await page.content();
let $ = cheerio.load(content, {decodeEntities: true});
const $bodyList = $("#contents > div > ul.movie_list.type2").children("li");
let i =0;
$bodyList.each(function(temp_Body){
if($(this).find('a > em').text() != "AD"){
movieData[i++]={
rank : i,
url: $(this).find('div.top_info > div > div > a').attr('href'),
title : $(this).find(' div.btm_info > strong').text(),
rate : $(this).find('div.btm_info > span > span.rate_info > em').text(),
star : $(this).find('div.btm_info > span > span.star_info').text(),
};
}
});
await page.goto('https://www.lottecinema.co.kr/NLCHS/');
content = await page.content();
$ = cheerio.load(content, {decodeEntities: true});
const $TypeList = $("#nav > ul > li:nth-child(3) > div > ul").children("li").find("div > ul").children("li");
i =0;
let flag = 0;
$TypeList.each(function(temp_Type){
if(flag==1){
theaterData[i++]={
LocateUrl : $(this).find('a').attr('href'),
LocateName : $(this).find('a').text(),
LocateQuery : $(this).find('a').attr('href')
.replace("https://www.lottecinema.co.kr/NLCHS/Cinema/Detail?divisionCode=","")
.replace("https://www.lottecinema.co.kr/NLCHS/Cinema/SpecialCinema?divisionCode=","")
.replace("&detailDivisionCode=","|").replace("&cinemaID=","|").replace("&screendivcd=","|"),
};
}else{
flag++;
}
});
await browser.close();
console.log("Completed!");
})();
app.get('/LotteCinema', asyncHandler(async (req, res, next) => {
res.send(movieData);
//console.log(movieData);
}))
app.get('/LotteCinema/theater', asyncHandler(async (req, res, next) => {
res.send(theaterData);
//console.log(theaterData);
}))
app.get('/LotteCinema/GetPlayingMovie', asyncHandler(async (req, res, next) => {
const browser1 = await puppeteer.launch();
const page1 = await browser1.newPage();
testTheaterName = "판교";
testDate = "2022-05-30"
let PlayingMovieURL;
let playingMovieData = [];
theaterData.forEach((val, index)=>{
// console.log(val);
if(val.LocateName.includes(testTheaterName)){
PlayingMovieURL = movieData[0].url+ "&screenCd="+ val.LocateQuery +
"&screenName=" + val.LocateName +
"&releaseDate=" + testDate;
}
})
//console.log(!PlayingMovieURL);
if(PlayingMovieURL){
await page1.goto(PlayingMovieURL);
content = await page1.content();
$ = cheerio.load(content, {decodeEntities: true});
let i = 0;
const $AbleList = $("#mCSB_9_container > ul").children("li");
$AbleList.each(function(temp_Able){
if($(this).attr("class") != "disabled"){
playingMovieData[i++]={
rank : i,
title : $(this).find("a > div.group_infor > div > strong").text(),
}
}
});
}else{
res.send("Please wait until get Movie and Theater information!");
console.log("Please wait until get Movie and Theater information!");
}
await browser1.close();
res.send(playingMovieData);
//console.log(theaterData);
}))
let server = app.listen(80);