정보마당

[파이썬] YES24티켓 오픈일 순 정보 추출해서 엑셀로 저장

IT(Idea Technology) 흑기사 2024. 11. 19. 18:37

YES24 티켓의 오픈일 정보를 추출해 엑셀 파일로 저장하는 작업을 파이썬으로 작성을 해보려 합니다. selenium을 사용할 필요도 없고 그냥 request로 데이터를 조회해서 크롤링한 후 엑셀로 저장한다고 생각하시면 됩니다. 이처럼 인터파크티켓이나 멜론티켓도 웹사이트에서 필요한 데이터를 크롤링하는 작업을 하고 엑셀로 관리하는게 일일이 들어가서 조회하는것보다 나은 생산성이 있어서 저는 이렇게 합니다.

 

파이썬으로 YES24 티켓 엑셀 저장

 

작업 과정

 

원래는 YES24티켓 사이트에 접속해서 오픈일자별로 데어터를 조회하고 정보를 추출했는데 어느순간 인터파크티켓도 확인이 필요하고 멜론티켓, 티켓링크등 확인해야 할 사이트가 많아지다보니 단순작업을 파이썬으로 하게되었습니다.

 

1). 라이브러리 설치

requests와 BeautifulSoup 라이브러리로 웹페이지 데이터 크롤링하고 openpyxl 라이브러리로 엑셀 파일 생성을 생성합니다.

pip install requests beautifulsoup4 openpyxl

2). 크롤링 대상 확인

YES24 티켓 오픈일 정보가 포함된 페이지 URL 및 HTML 구조 분석해서 원하는 구조로 데이터를 조회합니다.

3). 파이썬 스크립트 작성

페이지에서 제목, 공연명, 오픈일 등 필요한 정보를 추출해서 추출된 데이터를 엑셀 파일로 저장

 

 

전체적인 작업방향은 이렇게 정했고 이제 프로그램을 진행해 보도록 하겠습니다.먼저 YES24티켓에 들어가 오픈일 순으로 클릭하면 데이터가 아래처럼 나옵니다.

yes24

 

👉YES24티켓 알아보기

 

위의 화면을 크롬 개발자도구를 열어놓고 다시 조회하면 아래와같이 조회시 필요한 URL을 찾을 수 있습니다.

 

개발자도구

 

저기 보이는 URL을 크롤링해서 데이터를 찾으면 1차적으로 데이터 확인이 완료됩니다. DOM구조를 확인해보면 noti-tbl 클래스안네 table구조로 tr 태그안에 존재하는것이 보입니다.

 

DOM 샘플

 

이제 개발을 시작해 보겠습니다. 우선 위의 데이터 형식이라는것을 확인했으니 html 템프 데이터로 작업을 진행합니다.

data="""

    <div class="noti-tbl">
        <table>
            <colgroup>
                <col width="13%">
                <col width="57%">
                <col width="18%">
                <col width="12%">
            </colgroup>
            <tbody>
                <tr>
                    <th scope="col">구분</th>
                    <th scope="col">제목</th>
                    <th scope="col">티켓오픈 일시</th>
                    <th scope="col">조회수</th>
                </tr>

                <tr>
                    <td>
                        티켓오픈
                    </td>
                    <td>
                        <a href="#id=1072"><em>[부산] 뮤지컬 시카고</em></a>
                    </td>
                    <td>
                        2024.10.24(목) 14:00</td>
                    <td>
                        1,841
                    </td>
                </tr>

                <tr>
                    <td>
                        티켓오픈
                    </td>
                    <td>
                        <a href="#id=15113"><em>단독판매</em><em>콘서트 [투가이즈쇼]</em></a>
                    </td>
                    <td>
                        2024.11.01(금) 14:00</td>
                    <td>
                        1,792
                    </td>
                </tr>

            </tbody>
        </table>

    </div>
                
"""

 

먼저 위의 데이터를 보면 우리가 필요한것은 tr 태그의 td 부분임이 보이고 첫번째 데이터는 th 헤더값이다 보니 이 부분은 제외하고 데이터를 추출하면 되겠다고 느껴집니다. 

 

DOM 샘플

 

위의 DOM 구조에서 보면 td의 두번째 값이 타이틀이고 세번째 값이 오픈일시 그리고 마지막 네번째 값이 조회수로 확인이 되니 파이썬에서 td의 N번째 값을 조회할 수 있는 td:nth-child를 이용해서 데이터를 찾을 수 있습니다. 좌,우 공백을 없애기 위해 strip를 사용했습니다. 문자열의 시작과 끝에서 공백을 제거한 후 반환하기 위해 strip()함수를 사용했습니다.

DOM 구조

 

이제 이 데이터를 엑셀로 저장하기만 하면됩니다. 엑셀 저장부분은 그리 어렵지 않기 때문에 간략히 정리합니다.

데이터를 담을 빈 리스트를 설정하고 조회한 데이터를 리스트에 추가한 Dataframe으로 처리하면 끝납니다.

전체소스

 

간략하게 큰 틀을 알아봤습니다. 이해가 안가거나 구체적인 구현방향이 궁금하면 문의해 주세요. 

 

같이보면 좋은 글

 

 

[Python] 웹 크롤링 기초 - nth-child 활용방법

웹 크롤링은 데이터를 자동으로 수집하고 처리하는 데 매우 유용합니다. 특히, HTML 구조에서 특정 위치에 있는 요소를 선택할 때 nth-child를 활용하면 효율적인 데이터 수집이 가능합니다. 같은 DO

manmul-jeongbo.com