Cheerio로 cgv 웹 크롤링(키워드 찾기)
알라딘 4dx를 예매하려고 크롤링 튜토리얼을 해보았다. 원래는 찾고자 하는 키워드를 홈페이지에서 찾은 뒤 텔레그램으로 알림을 줄 생각이었지만, 하다가 예매가 오픈해버리는 바람에..:) 키워드 찾는 데까지만 하고 일단 정리.
source code
- crawler.js
var request = require('request'); // used to make HTTP request var cheerio = require('cheerio'); // parse and select HTML elements var URL = require('url-parse'); // parse URLs // 키워드를 검색할 url 주소. 극장별 영화 시간표에 들어가서 개발자도구의 소스를 보면 해당 극장의 상영시간표를 찾을 수 있다. theatercode, date를 변경하여 극장과 날짜를 고르면 된다. var START_URL = "http://www.cgv.co.kr/common/showtimes/iframeTheater.aspx?areacode=01&theatercode=0059&date=20190727"; var SEARCH_WORD = "알라딘"; var url = new URL(START_URL); visitPage(url); function visitPage(url) { // Make the request console.log('Visiting page ' + url); request(url, function(error, response, body) { //check status 200 console.log('Status code: ' + response.statusCode); if(response.statusCode !== 200) { visitPage(); return; } // Parse the document body var $ = cheerio.load(body); var list = $('.info-movie'); list.each(function(i,v) { var $title = $('strong', this); if($title.text().trim() === SEARCH_WORD) { var $parentDiv = $title.parent().parent().parent(); console.log(SEARCH_WORD + "은 " + i + "번째 인덱스에 있어요"); console.log($('.info-hall li',$parentDiv).text()); } }) }) }
- package.json
{ "name": "simple-webcrawler-javascript", "version": "0.0.0", "description": "A simple webcrawler written in JavaScript", "main": "crawler.js", "author": "dy", "license": "ISC", "dependencies": { "cheerio": "^0.19.0", "url-parse": "^1.0.5", "request": "^2.65.0", "sanitize-html": "^1.20.1" } }
terminal 콘솔
일단 dom위치를 찾아서 콘솔에 찍히게 하는 것까지 성공. 이제 boolean 리턴하는 함수를 만들어서 키워드를 찾을 시 true를 리턴하게 하고, 결과값이 true면 알림을 보내도록 하는 것을 하면 된다.