백발 청년 햄버거 메뉴

목차

    안녕하세요. 백발청년 입니다. 오늘은 엑셀관련 포스팅을 해볼까 합니다. 사실 이 글이 오늘 포스팅이 완료가 될지, 아니면 몇부작으로 늘어지게 될지, 아니면 쓰다가 멈추고 다음에 게시할 수 있게 될지는 아직 잘 모르겠습니다. 제목이 좀 거창했습니다. "엑셀 VBA로 웹페이지 파싱하기" 라는 주제 인데요. 예전에 한창 영업을 할 때, 참고했던 여러 웹사이트에서 필요한 자료들과 정보들이 있는데, 그 정보를 한페이지 씩 들어가서 확인하고 복사해서 DB로 만들고 하는 과정이 너무 번거롭고, 또 힘들기도 했었기 때문에 어떻게 하면 자동화 시킬 수 있을까를 고민하다가 파싱이라는 방법을 찾게 되었고, 코딩을 제대로 배우지 못했던 상태에서 문법도 잘 맞지 않는 코드를 이용해 파싱을 성공했던 내용에 대해 간략하게 써볼까 합니다. 처음엔 로그인이 필요하지 않은 사이트를 파싱해서 내용을 긁어 엑셀에 DB화 시켰고, 그를 이용해서 많은 도움이 되었습니다. 그 후엔 로그인이 필요한 사이트에 도전을 하게 되었고, 약 일주일간 매달리다가 해결을 하고, 역시 많은 도움을 얻을 수 있었습니다. 이번에 포스팅할 내용은 정말 많은 사이트와 블로그 등에서 참고해서 코드를 따다가 수정하고 실행시켜보고 맞지 않는 것은 고치고 또 수정하고 실행하고 하는 과정이 담겨 있겠습니다. 이 글을 시작하긴 해야겠는데, 과연 이 글을 마칠 수 있을지 궁금합니다. VBA로 프로그래밍 아닌 프로그래밍을 하고, 주변에 코딩하는 분들께 코드를 보여드리고(그분들의 답변은 도대체 무슨 코드인지 모르겠다는 답변들...) 또 수정하고 하는 일련의 시간이 참 값진 시간이었지만 실패의 쓴맛을 보는게 마냥 기분이 좋지만은 않았습니다. 특히 로그인이 필요한 웹사이트에서는 winhttp를 이용하고 post와 SetRequestHeader, referer, content-Type 등, 처음보는 용어들이 쏟아져 나오는 파이어폭스의 애드온을 사용해서 얻은 리턴값들을 다시 로그인하는 코드에 반영하고, 쿠키값을 만들어 그 값을 저장하고... 하는 과정은 거의 매번 실패를 하였던 기억밖에 없습니다. 현재는 오늘 올리려 하는 코드를 이용해서 파싱을 즐겼던 사이트의 틀 자체가 너무 많이 바뀌었기 때문에 파싱이 불가능해졌고, 이걸 다시 수정하기도 벅찬 상태지만 성공을 했던 당시의 코드를 함께 나눠볼까 합니다. (어차피 성공을 못할 코드라서...)

    서론을 쓰다가 문득 이런생각이 들었습니다. 이번 포스팅은 몇부작으로 가야할까? 라는 생각이랄까요. 한번 포스팅을 하는데 코드를 다 담아서 포스팅하기엔 하루 이상의 시간이 소요될 것만 같아서요. 사실 고급필터를 정리해서 올리는데도 굉장히 오랜 시간이 걸렸기 때문에 이걸 올린다는게 얼마나 어려운 일 인지에 대해서도 다시금 생각해 보게 되었습니다. 그래서 아마 오늘은 어떤 페이지의 어떤 정보를 얻으려고 했었고, 그 정보를 얻기 위해 어떠한 파싱 코드를 짰었는지 대략적인 것들만 살펴보도록 하겠습니다. 아무래도 이건 주말이나 시간이 많을 때 해봐야 할 것 같습니다.

    웹사이트 파싱이 필요했던 정보부서 및 담당자, 그리고 전화번호와 이메일 주소 정도가 필요했었습니다. 휴대폰 번호가 노출이 되어 있는 경우는 흔치 않았습니다.
    영업을 하는 사람에게 필요한 것은 역시 DB, 데이터베이스 인데, 사실 한명 한명 만나가면서 DB를 만들기는 쉽지 않습니다. 그래서 어디선가 DB를 구매하거나 혹은 어디선가 얻어오는 경우가 많지요. 저는 얻어오는 경우를 택했고, 그리고 웹 사이트에 이러한 DB들이 쌓여 있는데 그걸 하나씩 하나씩 손으로 옮기다가 어느날 이 번거로운걸 왜 사람이 해야 하는가에 대한 깊은 고민과 성찰을 하고 기계에게 넘기기로 마음 먹었습니다.

    파싱을 실행했던 폼엑셀 VBA로 만들 수 있는 폼 입니다.
    엑셀에는 VBA라는 굉장히 유용한 도구가 있습니다. 엑셀에서 함수를 이용할 줄 알면 중급, VBA를 이용할 줄 알면 고급이라 했는데 저는 초급이었던 것 같은데 귀찮은걸 하기 싫어하는 저는 과감히 중급을 포기하고 고급으로 넘어가기로 했습니다. 사실 Vlookup이나 Hlookup은 초급 수준이잖아요? 중급은 무슨 처음 듣는 함수들이 막 튀어나오던데...

    파싱을 통해 쌓인 DB를 정리하는 코드파싱을 통해 얻은 DB들이 어지럽게 쌓여있는데 그걸 깔끔하게 정리하던 코드입니다.
    VBA를 건드리다보면, 혹은 VBA를 본격적으로 건드리기 전에 바로 만나게 되는게 바로 매크로 입니다. 어떠한 행동을 하는걸 컴에게 보여주고 이대로 따라해라~ 하고 명령하는게 바로 매크로이지요. 매크로를 사용할 때 처음에는 그냥 녹화해서 따라하는거만 실행했지만, 나중에는 매크로를 코드로 만들게 될 정도로 혹독한 코딩을 하게 되었습니다. 물론, 지금은 그거 기억 안나요. concatenate함수도 기억이 나지 않는걸요.

    오늘은 여기까지 쓰고, 주말에 한가할 때, 작업이 없는날 다시 한번 포스팅을 진행하도록 하겠습니다. 코드가 다시보니까 엄청 지저분하고 기네요. 이거 공개하기 굉장히 부끄럽군요.

    댓글
    위쪽 화살표
    도움이 되었다면 공감(하트)과 댓글을 부탁드려요.
    //스크립트는 script로 수정해주세요.//