프로젝트 개발일지 - 1

dleenattv·2020년 8월 20일

스파르타코딩클럽

목록 보기
2/4

매일 퇴근하고 한시간정도 짬을 내서 프로젝트를 붙잡고 있었는데
집중을 잘 못해서 몇 줄 쓰고 딴짓하기를 반복하다가
드디어 오늘 조금 진도가 나갔기에 기록을 남긴다🎉

화면을 만들기 전에 일단 사용할 데이터를 준비하려고 수업시간에 배웠던 requests 라이브러리와 beautifulSoup를 이용해 PC 인터파크 티켓과 PC YES24 티켓 페이지를 스크래핑하는데...

iframe이라는 예상치 못한 복병이 등장한다.
언뜻 보기에는 id가 있으니 #iFrmNotice로 셀렉트해서 하위 요소를 가져올 수 있을 것 같았는데
생각처럼 잘 되지 않았다.

그래서 iframe 크롤링으로 검색을 해보니, selenium 라이브러리를 사용하면 이런 문제를 해결할 수 있다고 하여 구글링 끝에 원하는 데이터를 러프하게... 가져올 수 있게 되었다.
생각보다 스크래핑 엄청 손이 많이 간다...😢

이제 내가 원하는 방식으로 db에 쌓기 위해서 어떤 데이터가 필요한지 대략 생각해봤고 다음과 같다.

1. ID (인덱스용. 자동으로 생성될거니까 OK)

2. 구분

  • 뮤지컬인지 연극인지... 인터파크는 게시글에 별도로 '구분' 컬럼이 있어서 그대로 가져오면 되는데, YES24는 애초에 그런식으로 구분이 안되어있다😂
    그래도 제목에 뮤지컬이면 뮤지컬, 연극이면 연극 이라는 문구가 꼭 들어있어서 제목 문자열에서 해당 뮤지컬/연극 문자를 찾아 분류하는 식으로 해보려고 한다. 아니면 해당 게시글 링크를 타고 들어가서 그 안의 공연 제목을 가지고 공연예술통합전산망 API에서 공연 정보를 전부 가져와서 그 중에서 구분값을 기준으로 나눠도 될 것 같다.

3. 단독판매 여부

  • 각 사이트의 단독판매 상품의 경우 해당 사이트에서만 볼 수 있으므로 두 사이트를 다 방문해야하는 귀찮음이 있다. 이 귀찮음을 해결하기 위해서는 꼭 필요한 데이터인데, YES24는 게시글 목록에서 해당 데이터를 추출할 수 있는 반면 인터파크는 게시글 안으로 한번 들어가야한다.

4. 티켓오픈일

  • DB에 저장할때는 다루기 편하게 YYYYMMDDHHMMSS이런식으로 변환해서 저장하면 어떨까🤔

5. 제목, 출연진 등 공연정보

  • 사실 그냥 스크래핑한 데이터 뿌려도 되는데, API를 써보자...
  • 공연장 적을때 소재지도 같이 적어놓고 싶다. 나같이 지리에 무심한 사람을 위해...

5번을 그냥 퉁치긴 했는데 좀 더 자세히 생각해야겠지...

공연정보는 공연정보대로 받아와서 공연정보 테이블에 쌓고 티켓오픈 정보는 티켓오픈 테이블에 쌓아서 데이터 보여줄때는 조인걸어도 좋겠다. 물론 mongoDB 스파르타에서 첨 써봐서 조인하는 법부터 찾아봐야함😂... RDBMS 쓰고싶다...

그리고 티켓오픈 알림이 목적이니까 DB에 필요없는 데이터는 스케줄러로 삭제해주면 좋을 듯 하다.
(ex. 종료된 공연정보, 티켓오픈 취소, 티켓오픈일이 지난 티켓오픈정보 이건 좀 더 생각해보자... 티켓오픈일은 지났어도 예매는 가능하고 오히려 티켓오픈일 지났군? 그럼 천천히 예매하지뭐, 하고 잊어버린 경우가 훨씬 많았다)

또, 티켓오픈일정이 변경되는 경우도 있는데 이럴때는 어떻게 할지도 고민이 필요하다.
변경/취소라는 문구가 있으면 해당 공연만 오픈일을 한번 더 찾아서 업데이트 쳐줄지... 그럼 스케줄러 주기는 어떻게 해야하나🙃

그래서 간략 TODO 리스트는 이러하다.

  • DB 설계 후 데이터 인서트
  • 스케줄러 개발
  • 스케줄러대로 데이터 잘 들어오면 프론트 개발
  • 카톡알림 (과연 여기까지 할 수있을까...?)

알림이 메인이었는데😂... 안되면 메일이라도 보내자!
일단 일요일까지 스케줄러 구현하기!

0개의 댓글