parkj***
2017-01-05

원서에서는 스크래이핑(scraping)이라는 표현을 쓰고 있지만, 번역자 분께서는 아무래도 한국에서 더 널리 쓰이고 있는 크롤러(crawler)라는 단어를 채택하신 것 같다. 결국 핵심은 웹 페이지를 탐색하여 가져와서 자동으로 데이터를 추출해 내는 행위를 뜻한다. 사실 예전에 웹 크롤러를 작성해본 적이 있기 때문에 이 책의 내용이 별로 대단한건 없을거라고 생각했는데 큰 오산이었다. 내가 사용했던 방법은 정말로 초보자 수준이었고, 함수들을 제대로 몰라서 노가다를 뛴 측면이 많았다. 이 책에서는 다양한 API와 정규표현식을 사용하여 보다 Elegance한 방법을 제시하고 있다.
저자는 단순히 프로그램 개발만 잘하는 것이 아니라 데이터베이스 관리, 자연어 처리, 성능 튜닝, 보안 등등 다양한 관점을 겸비한 전문가로 보인다. 특히 온라인의 폼(Form)과 로그인 인증을 우회하거나 CAPTCHA를 뚫는 것은 정보보안적 관점에서도 중요한 위협(또는 방어)가 될 수 있기 때문에 저자는 이러한 취약점에 대해서도 상세히 설명하고 있다. 이는 자연스럽게 법적인 문제를 야기할수도 있는데, 사실 크롤링 행위 자체에 대해서는 불법이 아니라고 하지만 이것이 과하여 상대방의 웹사이트를 다운시킬 정도가 된다면 이것은 윤리적으로 모호한 상황이 아니다, 그것은 명백히 잘못된 일이므로 항상 주의를 기울여야 한다. 더불어서, 상대의 컴퓨터 뿐만 아니라 나의 컴퓨터도 지키기 위해서는 성능 이슈를 잘 관리하여야 한다고 지적한다. 이를 위해서는 적절한 쓰레드 처리로 부하를 분산하는 등의 방법이 요구된다(270page참조). unittest, 셀레니움 등을 사용하여 테스팅을 해보는 것도 좋다.
결론적으로 이 책을 요약하자면, 인터넷이라는 거대한 밀림 속에서, 내가 원하는 자료를 찾기 위해 온갖 이미지를 다운로드하고 그 중 글자를 추출하고 가공하여 데이터베이스에 저장하는 등 일련의 과정을 거쳐서 다양한 문제들을 해결할 수있다는 것을 말한다. 물론 숙련을 위해서는 많은 연습과 시간이 필요할 것이다. 그렇지만 이 책 덕분에 참 다양한 인사이트를 얻었다. 내가 관심있는 주제를 하나 선정하여 크롤러 프로젝트를 한번 수행해봐야 겠다.