-
장고 APP 생성 후 DB에 담을 준비web/Django 2019. 11. 28. 18:45
app 생성은 다음과 같은 startapp [ app이름 ] 으로 생성하면 된다
생성한뒤 디렉터리를 보면 새롭게 cgv라는 app 디렉터리가 생긴 것 을 볼 수 있다
이제 생성한 app 안에 있는 model.py를 이용해
데이터베이스의 구조를 잡아보려고 한다.
다음과 같이 model.py 파일 안에 클래스를 만들었다
이는 DB에 Cgv_data 라는 테이블을 생성하고
name, start_tim, end_time ........ dt_area 의 컬럼을 생성한 것이다.
이제부터는
크롤링하는 소스를 함수형태로 바꾸어서
import 해서 사용할 수 있도록 만든뒤 본격적으로 DB에 담는 것을 수행한다.
from bs4 import BeautifulSoup from selenium import webdriver import requests import os movie_datas = [] # cgv 서울 지역별 url요청후 해당 지역의 iframe 링크를 받아온다 # 받아온 링크를 가지고 crawling이라는 함수의 인자값으로 전달 # 아래함수에서 추가한 list를 return def get_cgv () : url = 'http://www.cgv.co.kr' driver = webdriver.Chrome() driver.get('http://www.cgv.co.kr/reserve/show-times/') html = driver.page_source driver.close() soup = BeautifulSoup(html, 'html.parser') soup2 = soup.find('div', id='contents') for area in soup2.select('ul > li:nth-child(1) > div.area > ul > li > a ') : area_link = url + area.get('href') res = requests.get(area_link) soup = BeautifulSoup(res.content, "html.parser") for i in soup.select("iframe#ifrm_movie_time_table"): movie_data_link = url + i.get("src") crawling(movie_data_link) return movie_datas # 받아온 인자값 movie_data_link 에는 iframe 링크가 담겨있음 # 본격적으로 필요한 정보들을 수집 # 좌석, 영화 이름, 시간 등등... # 모든 데이터는 dic 형태로 담은뒤 movie_datas list에 추가 def crawling (movie_data_link) : res = requests.get(movie_data_link) soup = BeautifulSoup(res.content, "html.parser") for i in soup.select("div.sect-showtimes > ul > li"): for ec in i.select("div.type-hall > div.info-timetable > ul > li > a"): movie_data = { "name" : i.div.a.strong.text.strip(), "start_time" : ec.get("data-playstarttime"), "end_time" : ec.get("data-playendtime"), "area" : ec.get("data-theatername"), "seat" : ec.get("data-seatremaincnt"), "dt_area" : ec.get("data-screenkorname") } movie_datas.append(movie_data) # 직접 해당 파일을 실행시킬때만 get_cgv()함수의 리턴 값을 print # 즉 해당 모듈을 import 해서 사용시에는 직접 함수를 불어와서 실행 if __name__ == '__main__' : print(get_cgv())
결과
위와 같이 성공적으로 해당 parser.py 파일이 실행 되는 것을 볼 수 있음
'web > Django' 카테고리의 다른 글
장고 URLConf ( step.1 ) (0) 2019.12.05 CGV 좌석 정보 제공 WEB 서비스 만들기 (0) 2019.12.05 장고 DB에 파싱한 내용 담기 (0) 2019.12.04 장고 설치 -> 프로잭트 생성 -> DB 생성 (0) 2019.11.28 에디터 & 깃 허브 설정 (0) 2019.11.28