본문 바로가기

컴퓨터/Site Parsing

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

앞선 내용에서 하나의 id를 통해서 그것에 해당하는 정보를 가져오는 것을 하였다. 물론 이렇게 하나하나 가져와도 되지만, 대부분의 데이터들은 변하지 않는 데이터이기 때문에 이를 고려하면 이렇게 하나하나씩 데이터를 가져오는 것이 매우 비효율적이라는 것을 알 수 있다. 또한 이 데이터 하나를 가져오는 것만 해도 많은 overhead가 발생하기 때문에 최대한 이것을 줄이는 것이 좋다.


'최근본상품'의 배너를 보면, 책 이름과 가격에 대한 정보가 나와 있다. 그래서 이것을 이용하면 책과 그에 해당하는 가격을 쉽게 얻어낼 수 있을 것이라고 생각하고 분석을 시작하였다.


보통 이러한 데이터들은 비동기식으로 처리를 해서 가져오는 것이 일반적인 방법이기 때문에 Chrome의 Network에서 XHR부분만 filtering을 해서 본 결과 JsonGoodsList 부분이 '최근본상품'의 배너와 관련이 있다는 것을 알 수 있었다.

그리고 method가 GET이고 전달하는 parameter가 없기 때문에 Cookie를 통해서 데이터를 전송한다고 추측하였다.

그리고 Cookie정보를 보았을 때, RecentViewGoods라는 부분이 있었고, 이 값이 13776831`20060623를 encoding한 결과와 같다는 것을 통해서 과거에 본 상품들의 id를 `로 이어놓은 후에 encoding을 한 값을 주면 된다는 사실을 추측할 수 있었다.

그리고 이것은 Yes24 메인페이지에서 소스코드보기를 했을 때 찾을 수 있는 GetrecentViewGoods 함수와 http://www.yes24.com/JavaScript/recentviewgoods.js를 통해 이 가설이 맞다는 것을 알 수 있었고, 최대 100개까지 동시에 데이터를 가져올 수 있다는 것을 확인할 수 있었다.


따라서, 이 사실을 이용하면 여러 개의 책 제목과 해당하는 가격을 쉽게 알아낼 수 있다.


Python code


태그