메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

한단계 업그레이드되는 웹 크롤링 비법

mickey1***

|

2025-03-28

파이썬으로 웹 크롤러 만들기(3판)

다양한 웹에서 효율적으로 데이터를 수집하는 방법 A to Z

  • 저자 : 라이언 미첼
  • 번역 : 최경현
  • 출간 : 2025-01-31

"한빛미디어 서평단 <나는 리뷰어다> 활동을 위해서 책을 협찬받아 작성된 서평입니다."

 

"Scrape"는 웹 스크레이핑(Web Scraping)으로 사용되는 용어로, 웹사이트에서 데이터를 자동으로 수집하는 과정을 의미하며, 이는 사람이 직접 웹페이지를 탐색하며 정보를 수집하는 대신, 프로그램(스크레이퍼)을 사용해 데이터를 효율적으로 가져오는 방법을 말한다.

이 저서는 Python 기반 웹 크롤링, 데이터 추출 프레임워크 스크레이피를 사용하여 웹 크롤러 만드는 방법을 알려준다.

주피터 노트북에서 잘 구동이 안될 수 있으며, 대규모 웹 크롤링이나, 많은 정보를 처리하는 강력한 도구가 필요한 경우가 있으므로 스크레이피에 대한 정의와 규칙 등을 살펴보면서 필요성을 절감한다. 스크레이피에 대한 다양한 라이브러리를 살펴보면서 사용자 스타일에 맞는 웹 크롤러를 만드는 데에 최적화된 도구 같다. 기존에 간간이 사용하던 코드와도 호환성이 있으니 책이 어렵더라도 필독하여 한 단계 상승된 웹 크롤러를 만드는 데 좋은 저서다.

 

구슬이 서 말 이어도 꿰어야 보배라는 속담은 인터넷 서핑이 자유로운 시대에서 데이터를 어떻게 정보로 연결하여 나만의 인사이트를 창출하느냐에 같다.

 

데이터 사이언티스트는 ETL 즉, Extract, Transform, Load를 잘해야 한다.

이를 위한 최적화는 데이터를 모으고 추출하고 사용자의 편의와 목적에 맞는 분석과 가공을 할 줄 알아야 하고 변환 후에는 저장소에 저장할 수 있어야 한다. 데이터를 추출하는 방법에 대해서, 그것도 웹상에서 스크레이핑을 하는, 스크레파이를 이용한 방법을 제시한다.

 

파이썬 기초를 어느 정도 알고 있는 초급자라면 실력이 월등히 향상될 만하다. 놓쳤던 중요 코드 예시들이 돋보인다. 다만, 한 번에 숙지하여 적용할 수 있는 기대감보다는 천천히 코드와 구문을 몸에 익히는 것이 중요할 것 같다. 페이퍼 북으로 읽는 것이 힘든 분들에게는 인내가 필요하기도 하다.

[PART 1]에서는 HTTP 요청 만들기, HTML/CSS 구조 이해, Beautiful Soup과 Request 같은 라이브러리를 사용한 웹 페이지 구문 분석과 같은 기본 개념부터 시작하여, 웹 검색을 통한 데이터 추출과 양식 문제에 대한 기초를 배운다. [PART 2] 고급 스크레이핑에서는 웹 크롤러 구축을 위한 스크랩 프레임워크 사용, 셀레늄으로 자바스크립트가 많은 웹사이트 처리, 구조화된 데이터 검색을 위한 API 작업 등을 통한 각종 형식 데이터에 대한 크롤링에 대해서 다루고 있다. 윤리 문제 혹은 법적 개인 정보 보호에 대한 준수 등도 있지만 중점은 웹 스크레이핑이다. Python의 기초가 있는 사람에게는 좀 더 깊은 지식을 얻을 수 있으나, Python을 모르는 상태에서는 집중력이 필요하다.

 

지금은 AGI, GAN과 같은 생성형 AI에 치중하다 보니 웹 스크레이핑에 대한 관심도가 떨어진 것은 사실이다. 웹 스크레이핑은 데이터를 수집하는 작업 전체를 말하며, 데이터를 가져오거나 파싱을 하지 않아도 원하는 데이터를 수렴할 수 있는 방법과 도구가 많다. 완벽한 나만의 웹 크롤러가 아니라면 백 퍼센트 내게 맞는 도구가 될 수 없고 완벽한 데이터 수집이 불가능하다. 개개인의 욕구와 목적에 맞는 나만의 웹 크롤러를 만드는 방법! 그런 의미에서 <파이썬으로 웹 크롤러 만들기>는 컴퓨터 프로그램으로 다른 프로그램으로부터 들어오는 데이터를 맞춤형으로 추출할 수 있는 방법이다. 실습과 예제를 통한 자동화 크롤러는 스스로 더 노력을 해야 할 것 같다. AI Tool과 비교하면서 천천히 읽는데, 조금은 old 하거나, redundant 한 부분도 있으나, 정석이라고 이해하련다.

웹 스크레이핑의 주요 특징은 HTML, CSS, JavaScript 등을 분석하여 자동화된 데이터를 추출하는 것이다.

주로 가격비교 사이트, 데이터 분석, 리뷰 수집 등으로 사용되며 Python, Beautiful Soup, Scrapy, Selenium 등의 도구와 라이브러리를 사용한다. 웹 스크레이핑은 유용한 기술이지만, 웹사이트의 이용 약관이나 저작권법을 위반하지 않도록 주의해야 한다.

또한 확장성이 중요한데, 일정한 패턴에 유지관리와 견고성을 향상하기 위한 코드를 계획하는 방법에 대해서는 미시적 관점에서 데이터를 수집하기보다는, 최종 프로젝트의 목표에 맞는 정보 수집, 데이터의 가변성, 주기성에 대한 고민 그리고 데이터의 중복과 논리적 방법으로 데이터를 처리할 수 있는 계획이 필요함도 일깨워 준다. 제품 유형에 대한 메타데이터를 만들고 이후 속성 데이터를 계획하면 차후 유연하게 코드를 사용할 수 있듯이, 파이썬 객체를 설계할 때 검토해야 하는 체크리스트가 거의 모든 상황에 적용된다는 것을 생각할 수 있다. 이는 새로운 프로젝트가 시작될 때, 모든 코드의 기초가 되는 데이터 모델이 단단하게 정의되면, 다양한 웹 크롤링이 가능하다는 것을 강조한다. 기초의 중요성이 PART 1에서 충분히 할애되고 있다. 다양한 웹사이트라 할지라도 각 웹사이트에 대해 별도의 웹 크롤러를 만들면 좋겠으나, 다양한 사이트에서 사용할 수 있는 기초 공통 코드를 익히는 것이 중요할 수 있으며, content 인스턴트를 반환하는 함수로 이루어진 예제로 작업을 병행해 볼 수 있다.

웹사이트 크롤링 시 HTML 구조 확인과 적절한 태그, , 클래스 추가 등을 사용하는 툴도 자세하게 설명되어 있으며, 자동으로 새로운 페이지를 찾는 방법, 자동으로 웹사이트 링크를 수집하고, 링크를 통한 사이트 크롤링, 여러 페이지 유형의 크롤링 등 방법을 제시해 준다. 가장 쉬운 크롤링은 URL에서부터 시작하여, target_pattern에 맞는 페이지를 추출, URL에서 링크를 추출하고 상대 URL을 절대 URL로 변환, 이미 방문한 URL을 저장하여 중복 방문 방지 등등도 소개된다.

저장되지 않은 데이터는 웹 크롤링의 의미가 없다. 그러므로 저장 방법을 숙지하는 것은 인사이트에 반드시 필요하다.

다만, 예제에 나와 있는 웹 사이트 서버를 찾을 수 없어, 예제 실습에 초보자들이 헤맬 것 같다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?