ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CGV 파싱
    Web Crawler 2019. 11. 27. 20:54

     

     

    위의 사진은 전에 iframe 페이지를 크롬 브라우저요 요청한 결과이다

    div 태그의 클래스 sect-showtimes인 하위 태그들 li가 있으며 

    해당 li태그 들은 각각의 영화 정보들을 나누어서 담고 있다

    그렇다면 이제 이 li 태그들을 하나씩 불러와서 필요한 정보를 불러온다면 성공적으로 크롤링하는 것이다.

     

    가장 먼저 내가 필요로 하는 정보는 다음과 같다

    영화 이름

    영화 상영관 위치

    영화 상영 시간

    상영관 잔여 좌석

    상영 날짜

    이제 각 정보들이 포함되어 있는 태그들을 찾아야 한다.

     

    영화 이름

    ->

    다음과 같은 위치에 영화 이름에 대한 정보가 있는 것을 찾았다 바로 한번 정보를 불러와 보자

    for i in soup.select("div.sect-showtimes > ul > li") :
        name = i.div.a.strong.text.strip()
        print(name)

    다음과 같이 li 태그를 for 문을 통해서 전부 불러와서 해당 li 태그 안에 있는 strong이라는 태그의 값을 빼왔다

    빼온 뒤 text함수와 strip 함수를 이용해서 필요없는 공백과 태그를 제거

    나를 찾아줘
    겨울왕국 
    블랙머니
    러브 앳
    크롤
    허슬러
    

     영화들의 이름이 성공적으로 출력이 되었다.

     

     

    다음으로는 영화의 좌석 정보를 가져오겠다

    영화 좌석 정보가 담긴 부분의 아이콘을 눌렀더니 바로 예약할 수 있는 페이지가 나타났다

     

    109석 클릭 -> 페이지 이동

    위와 같이 내가 선택한 시간대의 영화를 예매할 수 있는 페이지로 넘어가 졌다.

    위의 액션을 통해 한 가지를 유추해 볼 수 있다.

    내가 한 행동은 나를찾아줘의  23 : 05 분 부분을 클릭하였다

    위와 같이 내가 선택한 값들이 선택이 되어 있는 새로운 페이지로 이동하였다.

    그 말은 즉슨 해당 클릭한 부분에 위와 같이 상영정보가 담긴 파라미터 값들이 있지 않을까???라는 사실을 유추해 볼 수 있다.

    한번 확인해 보자

    다음과 같이 내가 원하는 정보들이 a 태그의 각 속성에 들어가 있는 것을 확인할 수 있다.

    data-playymd            -> 영화 상영 년/월/일

    data-playstarttime      -> 영화 상영 시작 시간

    data-playendtime       -> 영화 상영 종료 시간 

    data-theatername       -> 영화 상영 지역 

    data-seatremaincnt     -> 영화 상영관 잔여 좌석

    data-screenkorname   -> 영화 상영관 위치

    이제 내가 필요한 정보들이 어느 위치에 있는지 파악했으니 한번 출력해 보자

    나는 for 문을 2중으로 사용해서 데이터를 뽑아올 것이다.

    첫 번째 for문에는 상영하는 영화에 대한 모든 정보가 담긴 태그들을 하나씩 불러온다

    두 번째 for문에서는 상영하는 영화에 대한 세부적인 정보를 하나씩 불러온다

    for i in soup.select("div.sect-showtimes > ul > li") :
        for ec in i.select("div.type-hall > div.info-timetable > ul > li > a") :
            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")
            name = i.select("div.info-movie > a > strong")
            print(name,start_time,end_time,area,seat,dt_area)

    다음 사진에서

    빨간 부분이 첫 번째 for문의 i의 값에 들어가는 내용이다

    검은색 부분이 두 번째 for문의 ec의 값에 들어가는 내용이다

     

     

    나를 찾아줘 2305 2502 CGV 강남 106 AOA관[6관(Laser)] 10층
    나를 찾아줘 2520 2717 CGV 강남 113 AOA관[6관(Laser)] 10층
    나를 찾아줘 2735 2932 CGV 강남 113 AOA관[6관(Laser)] 10층
    겨울왕국  2315 2508 CGV 강남 133 1관 6층
    겨울왕국  2400 2553 CGV 강남 148 3관 8층
    겨울왕국  2245 2438 CGV 강남 120 AOA관[5관(Laser)] 10층
    겨울왕국  2500 2653 CGV 강남 152 AOA관[5관(Laser)] 10층
    겨울왕국  2715 2908 CGV 강남 154 AOA관[5관(Laser)] 10층
    블랙머니 2530 2733 CGV 강남 145 1관 6층
    블랙머니 2755 2958 CGV 강남 144 1관 6층
    블랙머니 2250 2453 CGV 강남 85 4관 8층
    러브 앳 2505 2713 CGV 강남 108 2관(Laser) 6층
    크롤 2310 2447 CGV 강남 108 2관(Laser) 6층
    크롤 2730 2907 CGV 강남 112 2관(Laser) 6층
    허슬러 2515 2714 CGV 강남 110 4관 8층
    허슬러 2735 2934 CGV 강남 112 4관 8층
    
    Process finished with exit code 0

    결과는 다음과 같이 성공적으로 내가 필요로 하는 내용이 출력이 된다

     

     

    'Web Crawler' 카테고리의 다른 글

    Ajax 웹 크롤러 ( 롯데시네마 )  (0) 2019.12.11
    CGV 필요한 데이터 파싱  (0) 2019.11.27
    크롤링 시작 ( 각 지역별 상영관 )  (0) 2019.11.27
    CGV 크롤러 (Requests & selenium)  (0) 2019.11.27
    C.G.V 영화 크롤러  (0) 2019.11.27

    댓글

Designed by Tistory.