ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 온라인서점의 책 정보 파싱과 여행사의 여행상품 파싱
    파싱의 추억 2017. 7. 21. 00:44





    동시에 두개의 일이 연락이 왔다. 하나는 온라인 서점의 책정보를 수집하는일이고, 다른 하나는 여행사의 여행상품을 수집하는 일이다. 파싱이라는 일을 놓고 보면, 두가지 작업은 극과 극이다. 


    파싱은 웹사이트의 정보중에 원하는 정보만 뽑아내서, 디비에 정리해서 넣는 작업이다.  웹사이트의 정보는 사람이 보기에 좋긴 하지만, 데이타로써 가치는 없다. 데이타로써 가치가 있기 위해서는 일정한 규격으로 정리되어 있어야 한다. 워드에 적어놓은 글과 엑셀에 정리해놓은 자료의 차이라고 할까? 


    파싱작업의 두가지 


    파싱 작업은 크게 두가지 부분으로 나뉘어 진다. 

    해당 사이트의 HTML 소스를 가져오기와 HTML 소스에서 필요한 부분만 잡아내서 디비나 엑셀에 정리하기이다. 


    첫번째일은 비교적 쉽다. 웹브라우저로 해당사이트를 여는 행동을 프로그램화하면 된다. 가끔 막히거나 하는 경우가 있지만, 여러가지 우회방법으로 해결이 가능하다. 로그인을 처리해야할때가 골치가 아프긴 하지만, 이 또한 안되는 경우는 없다. 


    두번째일이 파싱의 주업무라고 볼수 있다. HTML 소스에서 원하는 부분만 잘 발췌하면 된다. 이 작업을 할때는 HTML 소스의 구조를 잘알고 있으면 도움이 된다.  최근에는 HTML소스에는 나타나지 않는 자료들이 ajax 형태로 제공되기도 한다. ajax의 동작원리는 좀 알고 있다면, 간단히 자료를 가져올수가 있다.



    파싱은 패턴찾기


    문제는 HTML 소스를 분석이 어려울때다. 각 웹사이트들의 자료들은 일정한 패턴을 가지고 있다. 그 패턴을 찾아내서 프로그램을 작업하면 된다. 패턴이 1가지 라면, 한번만 작업한뒤 10번, 100번 돌린다. 컴퓨터가 잘하는일은 반복이다. 100번이든 만번이든 잘돌아간다.


    온라인서점에서 책정보를 가져오는 일은 쉬운편이다. 패턴이 거의 일정하기 때문이다. 각 서점마다 패턴이 1,2가지다. 


    반면 여행사는 다르다. 온라인서점의 갯수는 3,4군데이지만, 여행사는 수십개다. 더 문제는 한 여행사안에서도 패턴이 일정하지 않다는 점이다. 책이라는 물건은 일정한 규격이 있다. 항상 네모난 모양이고, 크기도 거의 일정하다. 하지만, 여행상품을 다르다. 각 상품은 제각각이다. 제각각인데다가 자료를 웹페이지 올리는 사람이 엑셀에 자료를 올리듯이 올리지 않고, 워드에 글을 쓰듯이 올리는 경우가 많다. 1~4인 이라고 적었다가 1인-4인이라고 적기도 하고, 성인 4명이하 라고 적기도 한다. 사람이 보기에는 다 같은 말이지만, 컴퓨터가 보기에는 다 다른말이다. 



    완벽한 시스템 

    온라인 서점의 자료들은 프로그램화 하는데 무리가 없지만, 여행상품을 중간에 사람손을 타야한다. 최대한 사람손을 타지 않게 패턴을 정리하지만, 어쩔수 없이 손을 대야하는 부분이 생긴다. 사람손이 들어가기 시작하면, 시스템적으로 불안정해진다. 사람이 계속 모니터링을 해야하고, 언제 어느 여행사의 상품에서 펑크가 날지 몰라 불안할수 밖에 없다. 그래서, 여행상품을 파싱하는데는 모니터링프로그램이 추가로 필요하다. 자료수집에 오류가 날 경우 최대한 신속하게 복구하는것이 중요하기 때문이다. 


    반면 온라인 서점이 큰 리빌드를 하지 않는 이상  , 손댈일이 없다. 알아서 잘 돌아갈것이기 때문이다. 


    파싱을 취미겸 알바삼아 몇년을 해오고 있지만, 여행상품같은 파싱은 여전히 골치가 아프다. 



    사이트 파싱에 궁금한점이나, 의뢰는  로 주세요 ^^



    댓글

달을파는아이 @ nalab.kr