본문 바로가기

컴퓨터/Site Parsing

Yes24 가격 정보 가져오기 (1)

인터파크나 알라딘의 경우에는 책에 대한 정보를 가져오는 API를 공식적으로 제공하고 있다. 하지만, Yes24의 경우에는 이와 같은 API가 존재하지 않는다.

그래서 이번 포스팅을 통해서 Yes24에서의 도서나 음반의 가격을 가져오는 방법에 대해서 알아보도록 하겠다.


먼저 Yes24의 도서나 음반의 정보를 보는 url의 형태를 살펴보자.

http://www.yes24.com/24/goods/13776831?scode=032&OzSrank=1

위에 있는 링크는 이번 학기에 들었던 알고리즘 과목에서 사용한 교재인 Introduction To Algorithms에 대한 상세 설명이 있는 링크이다.

http://www.yes24.com/24/goods/20060623?scode=032&OzSrank=1

위에 있는 링크는 이번에 일본에서 발매된 윤하의 앨범인 View에 대한 상세 설명이 있는 링크이다.

이 두 링크 모두 검색을 통해서 클릭을 했을 때 나오는 url이다. 이 두 링크의 공통점을 찾아보면 http://www.yes24.com/24/goods/{숫자}?scode=032&OzSrank=1의 형태를 띠고 있다는 점이다.

그리고 이것을 통해서 {숫자}부분에 있는 숫자가 도서나 앨범의 고유 id라는 것을 알아낼 수 있다. 추가적으로 ? 뒤에 있는 데이터의 경우에는 그것을 보내지 않더라도 상세내역은 볼 수 있기 때문에 그냥 data mining을 하는 용도라고만 생각할 수 있다.


즉, http://www.yes24.com/24/goods/{id}의 링크로 들어가면 제품의 상세보기 페이지로 넘어간다는 것을 알 수 있다.


이제 url의 형식에 대해서 알았으니 이제 데이터를 가져오도록 하자.


일단 주어진 값이 도서인지 혹은 앨범인지 여부에 대해서 알아보도록 하자. 도서와 앨범의 여부는 <span class="rkeyL">의 텍스트 부분을 읽으면 바로 알아낼 수 있다.

제목이나 이름은 <div id="title">의 하위 항목인 <h1>의 텍스트 부분을 읽으면 알아낼 수 있다.

저자나 가수, 그리고 출판사 등에 대한 정보는 <div id="title">의 하위 항목인 <p>의 텍스트 부분을 파싱한 것이다.

가격과 적립 포인트에 대한 정보는 <table summary="상품 가격정보 테이블">에서 파싱을 해오면 된다.

출간일과 발매일의 경우에는 <dd class="pdDate">의 하위항목 중 처음의 <p>의 텍스트 부분을 얻어오면 된다.

책의 목차는 <span class="more_contents OZSHOW">의 텍스트 부분을 가져오면 된다.

앨범의 재생목록은 <ul class="dlist">의 하위 모든 <li>의 텍스트 부분을 가져오면 된다.


물론 이렇게 해서 계속 데이터를 업데이트를 할 수는 있지만, 이와 같은 방식이면 100개의 정보를 가져오려면 100번의 request를 요청해야 한다. 그리고 데이터의 특성상 자주 변하는 값은 없고, 바뀔 수 있는 값은 판매 가격와 포인트 정도가 변할 수 있고, 포인트의 경우에도 판매 가격이 일정하면 변할 수가 없다. (물론 등급에 따라 차등적으로 지급되는 포인트의 경우에는 달라질 수 있다.)


따라서, 좀 더 편리한 방법으로 가격 정보만 뽑아올 수 있는 방법이 없을까하고 사이트를 분석하던 도중, '최근본상품' 부분에서 제품의 이름과 가격에 대한 정보가 제공된다는 것을 확인할 수 있었다.

그래서 이부분을 이용하면 좀 더 간편하게 가격정보를 얻어올 수 있을 것이라고 예측하였다. 이에 대한 내용은 (2)번 항목에서 계속 진행하도록 하겠다.



태그