[Review] 파이썬으로 웹 크롤러 만들기(2판)

Jade·2021년 8월 22일
0

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

책의 구성

Part 1. 스크레이퍼 제작

  • 웹 스크레이핑의 기본에 대해 다룬다. 파이썬으로 웹 서버에 정보를 요청하는 법, 서버 응답을 처리하는 법, 웹사이트와 자동적으로 통신하는 법이 주요 내용이다.

Chapter 1. 첫 번째 웹 스크레이퍼

  • 웹 브라우저의 도움 없이 데이터 구조를 파악하고 해석하는 방법을 배울 수 있다.
  • 웹 브라우저가 프로세서에 명령을 내려 데이터를 애플리케이션에 보내고 처리하는 것을 파이썬에서는 단 세줄의 코드로 똑같이 동작하게 할 수 있다.
    • 파이썬 표준 라이브러리인 urllib를 사용하면 웹을 통해 데이터를 요청하거나 쿠키를 처리하거나 심지어 헤더나 유저 에이전트 같은 메타데이터를 바꿀 수도 있다.
    • urlopen은 네트워크를 통해 원격의 객체를 읽는다.
    • BeautifulSoup 라이브러리는 잘못된 HTML을 수정하여 쉽게 탐색할 수 있는 XML 형식의 파이썬 객체로 변환한다.
  • 스크레이퍼를 만들 땐 코드의 전반적인 패턴에 대해 생각해야 예외도 처리하고 읽기도 쉽게 만들 수 있다.

Chapter 2. 고급 HTML 분석

  • 복잡한 웹 페이지에서 원하지 않는 콘텐츠를 깎아내서 필요한 정보를 얻는 방법을 학습할 수 있다.
  • BeautifulSoup로 속성을 통해 태그를 검색하는 법, 태그 목록을 다루는 법, 트리 내비게이션을 분석하는 법을 배운다.
  • BeautifulSoup와 함께 쓸 수 있는 정규 표현식을 학습할 수 있다. 복잡해보이기만 했던 정규 표현식을 하나씩 쪼개 보면서 조금 더 명확하게 이해할 수 있다.

Chapter 3. 크롤링 시작하기

  • 웹 크롤러의 핵심은 재귀이다. 즉, URL에서 페이지를 가져오고, 그 페이지를 검사해 다른 URL을 찾고, 다시 그 페이지를 가져오는 작업을 하는 것이다.
  • 단일 도메인 내에서의 이동부터 인터넷 크롤링까지 할 수 있는 기법들을 소개한다.

Chapter 4. 웹 크롤링 모델

  • 확장성이 뛰어난 크롤러를 만들기 위한 패턴을 익힐 수 있다.
  • 여러 도메인, 또는 여러 소스에서 유사한 데이터를 수집할 때는 항상 일반화를 시도해야 한다는 점을 유념하자.
  • 또한 스크레이퍼를 만들 때는 추후 더 많은 데이터 소스가 추가될 것이라고 가정하고, 새 소스를 추가하는 데 필요한 프로그래밍 노력을 최소화하는 방향으로 설계해야 한다.

Chapter 5. 스크레이피

  • 초판 출판 당시에는 파이썬3를 지원하지 않아 책에 싣지 못한 프레임워크인 스크레이피가 2판에 추가되었다.
  • 스크레이피를 설치하고 간단한 스크레이퍼를 작성하여 동작 원리를 익힐 수 있다.

Chapter 6. 데이터 저장

  • 웹 스크레이퍼를 유용하게 활용하기 위한 데이터 저장 및 관리 방법에 대해 알아본다.
  • 모든 애플리케이션에서의 데이터 관리 방법은 총 세가지면 충분하다. 데이터베이스, 파일 스트림, 알림 이메일 보내기.

Part 2. 고급 스크레이핑

  • 원형 그대로의 데이터를 분석해서 그 뒤에 숨은 이야기, 웹사이트에서 종종 자바스크립트 계층이나 로그인 폼, 기타 스크랩을 방해하는 것들 뒤에 숨겨진 내용들을 엿볼 수 있다.

Chapter 7. 문서 읽기

  • 문서를 다루는 법과 텍스트 인코딩에 대해 학습할 수 있다.
  • 특히 자주 마주치는 파일 타입인 텍스트, CSV, PDF, 워드 문서에 대해 다룬다.

Chapter 8. 지저분한 데이터 정리하기

  • 지금까지 익힌 도구와 테크닉 코드 작성 방법을 바꿔서 비정형 데이터 소스에서 문제가 발생하지 않게 막거나, 일단 데이터베이스에 들어온 데이터를 정리하는 방법을 배울 수 있다.

Chapter 9. 자연어 읽고 쓰기

  • 텍스트 분석의 배경에 있는 개념을 이해하면 머신러닝 전반에 걸쳐 큰 도움이 되며, 현실 세계의 문제를 개연성과 알고리즘의 관점에서 모델링하는 더 범용적인 능력을 갖게 된다.
  • 텍스트 본문에 있는 단어를 통계적으로 분석해보기도 하고, NLTK라는 라이브러리 모음을 사용하여 간단한 실습도 진행할 수 있다.

Chapter 10. 폼과 로그인 뚫기

  • POST 메서드에 집중하여 로그인을 해야 얻을 수 있는 정보에 접근하는 방법을 배울 수 있다.

Chapter 11. 자바스크립트 스크레이핑

  • 현재 웹에서 가장 널리 쓰이고 지원이 잘되는 클라이언트 스크립트 언어인 자바스크립트에 대해 얕게나마 이해할 수 있다.
  • 대개 웹사이트의 통계나 추적, 사이트의 작은 부분을 제어, 드롭다운 메뉴를 만드는 용도로 쓰이므로 스크레이프 방법에 영향을 끼치는 경우는 많지 않다. 영향을 끼친다하더라도 셀레니움을 이용하면 이를 거의 무력화할 수 있다.

Chapter 12. API를 통한 크롤링

  • 셀레니움을 쓰지 않고 자바스크립트를 완전히 돌파해서 데이터 소스에 직접 접근하는 방법을 배울 수 있다.
  • 널리 쓰이는 최신 API로 웹의 데이터에 접근하는 방법, 그런 API를 통해 더 빠르고 강력한 웹 스크레이퍼를 만드는 방법을 배운다.

Chapter 13. 이미지 처리와 텍스트 인식

  • OCR(광학 문자 인식)기능이 있는 라이브러리를 이해하고 설치하고, 예제를 통해 간단한 실습까지 진행할 수 있다.

Chapter 14. 스크레이핑 함정 피하기

  • 폼을 전송하고, 지저분한 데이터를 추출해서 정리하고, 자바스크립트를 실행하는 등 웹사이트에서 봇으로 하기 어려운 일들을 해결하는 방법을 알아본다.
  • 내가 만든 봇이 스크레이퍼처럼 보이지 않고(?) 사람처럼 인식되도록 하는데 필요한 정보가 담겨있다.

Chapter 15. 스크레이퍼로 웹사이트 테스트하기

  • 파이썬 기반 웹 스크레이퍼로 웹사이트를 테스트하는 기본적인 방법을 익힌다.

Chapter 16. 병렬 웹 크롤링

  • 컴퓨터 과학의 다른 분야와는 달리, 웹 크롤링은 단순히 사이클을 더 할당한다고 개선되지는 않는다. 하지만 병렬 웹 크롤링이나 병렬 스레드/프로세스 실행이 더 나은 경우도 있는데 이러한 상황에서 사용할 수 있는 기법들을 알아본다.

Chapter 17. 원격 스크레이핑

  • 로컬 컴퓨터라는 제한된 환경을 벗어나 원격으로 스크레이핑을 작동시킬 수 있는 방법을 배울 수 있다.

Chapter 18. 웹 스크레이핑의 합법성과 윤리성

  • 웹 스크레이핑과 관련된 미국 법률에 대해 알아보고, 웹 스크레이핑 상황의 합법성과 윤리에 대해 이해할 수 있다.

느낀점

웹 크롤러를 만들기 위한 정보들은 인터넷에 넘쳐나지만, 나 같은 초보자에게 가장 적절한 것은 순도 높은 정보가 정갈히 정리된 책이라고 생각한다. 그런 점에서 우선 높은 점수를 주고 싶고, 실제로 단순하게만 생각했던 크롤링에 대한 나의 시야가 조금 더 확장된 느낌을 받았다.

아직 실습의 모든 내용을 따라 해보진 못했지만, 업무적으로도 개인적으로도 크롤러를 제작하고 싶단 충동을 느낄 때가 많으니(!!) 필요할 때 꺼내 보며 참고하면 많은 도움이 될 것 같다.

추천 독자

  • 파이썬 문법을 이해하고 있는 초중급자. (문법만 갓 뗀 초보자에게는 솔직히 어렵다.)
  • 파이썬을 이용한 웹 크롤러 제작에 관심이 있고, 시행착오를 줄이고 싶은 사람.
profile
우당탕탕 좌충우돌 인프라 여행기

0개의 댓글