오늘날 데이터가 넘쳐나는 웹에서 웹 크롤러로 할 수 있는 일은 무궁무진합니다. 이 마법을 위한 준비물은 약간의 파이썬 프로그래밍 능력 하나뿐, 나머지는 이 책에 모두 담겨 있습니다. 이 책을 활용하면 웹 크롤링을 이용해 업무를 자동화하고, 복잡한 웹 콘텐츠를 처리하는 통찰력을 얻게 될 것입니다. 새롭게 3판으로 개정된 이 책은 전반적인 코드를 최신화하고 실무에서 활용할 수 있는 예제를 추가했습니다. 또한 브라우저 자동화를 위한 셀레니움, 정확한 데이터 추출을 위한 XPath도 함께 다룹니다. 복잡한 웹 세상에서 효율적으로 데이터를 수집하고 싶은, ‘일상의 데이터 분석가’를 꿈꾸는 모두에게 이 책은 가장 정확한 나침반이 되어 줄 것입니다.
저자소개
저자
라이언 미첼
웹 크롤링, 보안, 데이터 과학에 관심이 많은 개발자. 현재 거슨 레만 그룹에서 수석 소프트웨어 엔지니어로 근무하고 있습니다. 프랭클린 W. 올린 공과대학교를 졸업했고 하버드 대학교에서 소프트웨어 엔지니어링 석사 과정을 밟았습니다. 어바인에서 웹 크롤러와 봇을 만들었고, 링크 드라이브에서는 API 및 데이터 분석 도구를 만들었습니다. 금융업 및 유통업 분야에서 웹 크롤링 프로젝트 컨설팅을 하고 있고, 교육과 강연 활동도 활발하게 펼치고 있습니다. 본서 외 저서로 『Instant Web Scraping with Java』(Packt, 2013)가 있습니다.
역자
최경현
SK텔레콤에서 통신 및 플랫폼 인프라 등 다양한 시스템을 운영했으며 현재는 개발 업무를 담당하고 있습니다. 옮긴 책으로는 『풀스택 테스트』(한빛미디어, 2023), 『처음 시작하는 마이크로서비스』(한빛미디어, 2021), 『쿠버네티스를 활용한 클라우드 네이티브 데브옵스』(한빛미디어, 2019)가 있습니다.
CHAPTER 1 인터넷 작동 원리 _1.1 네트워킹 __1.1.1 물리 계층 __1.1.2 데이터 링크 계층 __1.1.3 네트워크 계층 __1.1.4 전송 계층 __1.1.5 세션 계층 __1.1.6 표현 계층 __1.1.7 응용 계층 _1.2 HTML _1.3 CSS _1.4 자바스크립트 _1.5 개발자 도구로 웹사이트 검사하기
CHAPTER 2 웹 스크레이핑의 합법성과 윤리 _2.1 상표? 저작권? 특허? __2.1.1 저작권법 _2.2 동산 침해 _2.3 컴퓨터 사기와 악용에 관한 법률 _2.4 robots.txt와 이용 약관 _2.5 세 가지 웹 스크레이퍼 사례 __2.5.1 이베이 vs. 비더스 에지: 동산 침해 __2.5.2 미국 vs. 오언하이머: 컴퓨터 사기와 악용에 관한 법률 __2.5.3 필드 vs. 구글: 저작권과 robots.txt
CHAPTER 3 웹 스크레이핑 활용 분야 _3.1 프로젝트 분류하기 _3.2 이커머스 __3.2.1 마케팅 _3.3 학술 연구 _3.4 제품 개발 _3.5 여행 _3.6 영업 _3.7 SERP 스크레이핑
CHAPTER 4 첫 번째 웹 스크레이퍼 _4.1 주피터 노트북 설치 및 실행 _4.2 연결 _4.3 BeautifulSoup 소개 __4.3.1 BeautifulSoup 설치 __4.3.2 BeautifulSoup 실행 __4.3.3 신뢰할 수 있는 연결과 예외 처리
CHAPTER 5 고급 HTML 분석 _5.1 다시 BeautifulSoup __5.1.1 find()와 find_all() __5.1.2 기타 BeautifulSoup 객체 __5.1.3 트리 이동 _5.2 정규 표현식 _5.3 정규 표현식과 BeautifulSoup _5.4 속성에 접근하기 _5.5 람다 표현식 _5.6 닭 잡는 데 소 잡는 칼을 쓸 필요는 없습니다
CHAPTER 6 크롤링 시작하기 _6.1 단일 도메인 내의 이동 _6.2 전체 사이트 크롤링 __6.2.1 전체 사이트에서 데이터 수집 _6.3 인터넷 크롤링
CHAPTER 7 웹 크롤링 모델 _7.1 객체 계획 및 정의 _7.2 다양한 웹사이트 레이아웃 다루기 _7.3 크롤러 구성 __7.3.1 검색을 통한 사이트 크롤링 __7.3.2 링크를 통한 사이트 크롤링 __7.3.3 여러 페이지 유형 크롤링 _7.4 웹 크롤러 모델에 대한 생각
CHAPTER 8 스크레이피 _8.1 스크레이피 설치 __8.1.1 새 스파이더 초기화 _8.2 간단한 스크레이퍼 작성하기 _8.3 규칙에 의한 스파이더링 _8.4 항목 만들기 _8.5 항목 출력하기 _8.6 파이프라인 _8.7 스크레이피 로깅 _8.8 마치며
CHAPTER 9 데이터 저장 _9.1 미디어 파일 _9.2 데이터를 CSV로 저장 _9.3 MySQL __9.3.1 MySQL 설치 __9.3.2 기본 명령어 __9.3.3 파이썬과 통합 __9.3.4 데이터베이스 테크닉과 모범 사례 __9.3.5 여섯 다리와 MySQL _9.4 이메일
[PART 2 고급 스크레이핑]
CHAPTER 10 문서 읽기 _10.1 문서 인코딩 _10.2 텍스트 __10.2.1 텍스트 인코딩과 인터넷 _10.3 CSV __10.3.1 CSV 파일 읽기 _10.4 PDF _10.5 마이크로소프트 워드와 .docx
CHAPTER 11 지저분한 데이터 다루기 _11.1 텍스트 정리하기 _11.2 정규화된 텍스트 다루기 _11.3 판다스로 데이터 정리하기 __11.3.1 정리 __11.3.2 인덱싱, 정렬, 필터링 __11.3.3 판다스에 대해 더 알아보기
CHAPTER 12 자연어 읽고 쓰기 _12.1 데이터 요약 _12.2 마르코프 모델 __12.2.1 케빈 베이컨의 여섯 다리: 결론 _12.3 자연어 툴킷 __12.3.1 설치 __12.3.2 NLTK를 사용한 통계적 분석 __12.3.3 NLTK를 사용한 사전적 분석 _12.4 마치며
CHAPTER 13 폼과 로그인 뚫기 _13.1 파이썬 requests 라이브러리 _13.2 기본적인 폼 전송 _13.3 라디오 버튼, 체크박스, 기타 필드 _13.4 파일과 이미지 전송 _13.5 로그인과 쿠키 처리 __13.5.1 HTTP 기본 접근 인증 _13.6 기타 폼 문제
CHAPTER 14 자바스크립트 스크레이핑 _14.1 자바스크립트에 관한 간단한 소개 __14.1.1 널리 쓰이는 자바스크립트 라이브러리 _14.2 Ajax와 DHTML _14.3 셀레니움으로 파이썬에서 자바스크립트 실행 __14.3.1 셀레니움 설치 및 실행 __14.3.2 셀레니움 선택자 __14.3.3 페이지 로딩 대기 __14.3.4 XPath _14.4 그 밖의 셀레니움 웹드라이버 _14.5 리다이렉트 처리 _14.6 자바스크립트에 대한 마지막 노트
CHAPTER 15 API를 통한 크롤링 _15.1 API에 대한 간단한 소개 __15.1.1 HTTP 메서드와 API __15.1.2 API 응답에 대해 _15.2 JSON 파싱 _15.3 문서화되지 않은 API __15.3.1 문서화되지 않은 API 찾기 __15.3.2 문서화되지 않은 API 문서화하기 _15.4 API와 다른 데이터 소스의 결합 _15.5 마치며
CHAPTER 16 이미지 처리와 텍스트 인식 _16.1 라이브러리 개관 __16.1.1 필로 __16.1.2 테서랙트 __16.1.3 넘파이 _16.2 형식이 일정한 텍스트 처리 __16.2.1 이미지 자동 조정 __16.2.2 웹사이트 이미지에서 텍스트 스크레이핑하기 _16.3 CAPTCHA 읽기와 테서랙트 훈련 __16.3.1 테서랙트 훈련 _16.4 CAPTCHA 가져오기와 답 보내기
CHAPTER 17 스크레이핑 함정 피하기 _17.1 스크레이핑의 윤리에 관해 _17.2 사람처럼 보이기 __17.2.1 헤더를 수정하십시오 __17.2.2 쿠키 처리 __17.2.3 TLS 핑거프린팅 __17.2.4 타이밍이 가장 중요합니다 _17.3 널리 쓰이는 폼 보안 기능 __17.3.1 숨긴 필드 값 __17.3.2 허니팟 피하기 _17.4 사람처럼 보이기 위한 체크리스트
CHAPTER 18 스크레이퍼로 웹사이트 테스트하기 _18.1 테스트 입문 __18.1.1 단위 테스트란? _18.2 파이썬 unittest __18.2.1 위키백과 테스트 _18.3 셀레니움을 사용한 테스트 __18.3.1 사이트 조작
CHAPTER 19 병렬 웹 스크레이핑 _19.1 프로세스 vs. 스레드 _19.2 멀티스레드 크롤링 __19.2.1 경쟁 상태와 큐 __19.2.2 threading 모듈 _19.3 멀티 프로세스 __19.3.1 멀티프로세스 크롤링 __19.3.2 프로세스 간 통신 _19.4 멀티프로세스 크롤링의 다른 접근법
CHAPTER 20 웹 스크레이핑 프록시 _20.1 원격 서버를 쓰는 이유 __20.1.1 IP 주소 차단 방지 __20.1.2 이동성과 확장성 _20.2 토르 __20.2.1 파이삭스 _20.3 원격 호스팅 __20.3.1 웹사이트 호스팅 계정에서 실행 __20.3.2 클라우드에서 실행 __20.3.3 미래를 향해 _20.4 웹 스크레이핑 프록시 __20.4.1 스크레이핑비 __20.4.2 스크레이퍼API __20.4.3 옥시랩스 __20.4.4 자이트 _20.5 마치며
출판사리뷰
HTML 기본 개념부터 AI 기반 데이터 추출까지, 높아진 웹의 장벽을 뛰어넘을 수 있는 최신 웹 크롤링 가이드
점점 더 다양하고 복잡해지는 방대한 정보의 바다에서 원하는 데이터를 얻으려면 어떻게 해야 할까요? 흩어진 데이터를 의미 있는 정보로 만들 수 있는 효과적인 도구가 있을까요? 『파이썬으로 웹 크롤러 만들기(3판)』는 이러한 질문들에 완벽한 답을 제공합니다.
1부에서는 웹 크롤링에 대한 기본적인 개념과 함께 파이썬과 BeautifulSoup 및 스크레이피와 같은 인기 라이브러리를 사용하는 비교적 간단한 웹 크롤러를 소개합니다. 그 후 MySQL의 데이터 저장, API 처리, CSV, PDF, 워드와 같은 형식의 문서 분석과 같은 핵심 기술을 이해하며 웹을 탐색하는 기본기를 배우게 됩니다.
2부에서는 1부에서 배운 기본기를 토대로 보다 복잡한 웹 환경을 분석하고 처리하기 위한 고급 기술을 다룹니다. 셀레니움을 활용하여 동적 자바스크립트 기반 페이지를 스크랩하고, 판다스와 같은 도구를 사용하여 지저분한 데이터를 정리하는 방법을 알아봅니다. 또한, 텍스트 데이터에서 의미를 추출할 수 있는 NLTK를 활용한 자연어 처리를 설명하며, 이미지에서 텍스트를 추출하여 CAPTCHA를 우회할 수 있는 테서랙트와 필로 같은 도구들도 함께 소개합니다.
변화하는 최신 웹 환경에 적절히 대응할 수 있도록 개정된 3판에서는 2판보다 이해하기 편한 구성으로 내용을 재배치하였고, 전반적으로 코드를 업데이트했습니다. 웹 크롤링을 처음 시작하는 초급자는 물론, 기존에 웹 크롤링을 업무에 활용하고 있던 중급자 이상의 분들에게도 만족감을 드릴 수 있는 도서라 자부합니다.
요즘은 chatGPT에게 데이터를 먹여 학습시킨 후 사용하기 위해 데이터 수집을 하는 일이 많아졌다. 공공데이터포털과 같이 정제되고 정리되어 있는 API로 데이터를 깔끔하게 수집하면 참 좋지만, API가 없는 경우도 많기에 직접 데이터를 수집해야 하는 일이 빈번하게 있다. 이런 면에서 웹 스크레이핑과 웹 크롤링을 배워보고 싶었는데, <파이썬으로 웹 크롤러 만들기>라는 책을 통해 이번 기회에 제대로 배워볼 수 있을 것이라 기대한다.
저자가 말하길 이 책은 웹 스크레이핑을 소개하는 것에 그치지 않고, 오늘날 웹에 존재하는 거의 모든 종류의 데이터를 수집, 변형, 사용할 수 있는 상세한 가이드가 될 수 있도록 구성했다고 한다. 이 책은 기본적인 파이썬 지식은 알고 있어야 따라올 수 있기 때문에, 기초적인 파이썬 숙지가 아직 어려운 독자들은 파이썬 기본서를 읽어보고 나서 이 책을 읽는 것을 추천드린다. 읽어본 바로는 아래 보여줄 책의 일부처럼 예시 코드가 상세히 기재되어 있고, 그에 따른 설명도 있어서 기초 Python과 HTML의 기초 지식정도만 가지고 있으면 엄청 버겁다고 생각이 들진 않을듯 하다.
한빛미디어 <혼자 공부하는 데이터분석>에서 웹 스크랩핑 사용하기라는 목차로 웹 스크레핑을 한번 간단하게 해본적이 있었다. HTML에서 데이터를 추출하기 위해 Beautiful Soup라는 패키지를 사용했었다.
여기서도 동일하게 Beautiful Soup를 사용하고 있다. 이 패키지는 잘못된 HTML을 수정하여 쉽게 탐색할 수 있는 XML 형식의 파이썬 객채로 변환하기에 골치아픈 웹을 탐색할 때 유용하게 사용된다.
Beautiful Soup 객체에 find_all 함수를 사용해서 <span class='green'></span> 태그에 들어있는 텍스트만 선택해서 고유명사로 이루어진 파이썬 리스트를 추출할 수 있는데, 하단과 같이 find 함수가 어떤 매개변수를 어떻게 왜 사용하고 있는지 하나하나 세심하게 짚어주면서 설명이 되어있다.
책 구성은 이런식으로 예시코드와 코드에 대한 설명 그리고 출력 결과에 대한 설명까지 상세히 적혀있어 웹 스크레핑과 웹 크롤링의 기본서로써 손색이 없어보인다. 책의 1부에서는 웹 스크레이핑과 웹 크롤링에 대해 깊이 있게 설명하며 책에서 사용할 라이브러리에 중점을 두며 설명하고, 2부에서는 웹 스크레이퍼를 만들때 유용한 추가 주제를 다룬다. 문서 읽기나 지저분한 데이터 다루기, 자연어 읽고 쓰기, 폼과 로그인 뚫기, 자바스크립트 스크레이핑, API를 통한 크롤링, 이미지 처리와 텍스트 인식, 병렬 웹 스크레이핑, 웹 스크레이핑 프록시처럼 처음 들어보는 고급 스크레이핑 기술까지 책에 상세히 기술되어 있기에 스크레이핑에 대한 많은 지식을 습득할 수 있다.
발전하는 AI와 데이터분석 기술을 따라가려면 데이터 수집이 가장 기본적인데, 데이터 수집을 스스로 해보고 싶던 독자들에게 추천하고 싶은 책이다. 물론 저작권에 위배되지 않도록 주의하는거 잊지 말도록 하자.
AI 시대의 핵심 경쟁력은 바로 좋은 데이터를 얼마나 잘 확보할 수 있느냐에 달려 있습니다. 아무리 뛰어난 AI 모델이라도, 양질의 데이터가 뒷받침되지 않으면 제대로 된 성능을 끌어내기 어렵죠. 이럴 때 강력한 도구가 되어주는 것이 바로 웹 크롤링입니다. 이 책은 이러한 웹 크롤링, 웹 스크레이핑에 대한 이해를 돕고, 실제로 활용할 수 있는 능력을 차근차근 키울 수 있도록 구성되어 있습니다. 웹에서 데이터를 수집하고 가공해 활용하는 다양한 방법들을 단계별로 설명하며, 독자들이 자신에게 필요한 데이터를 효과적으로 활용할 수 있도록 안내합니다. 이 책은 웹 데이터를 수집하고 활용하고자 하는 모든 분들께 폭넓게 추천드릴 수 있습니다. 특히 아래와 같은 분들에게 큰 도움이 될 거예요.
웹 데이터를 활용해 무언가를 만들고 싶은 입문자 파이썬에 익숙하지 않더라도, 기초 개념부터 예제까지 친절하게 설명되어 있어 처음 시작하는 분들도 부담 없이 따라올 수 있습니다.
AI 개발자 및 데이터 분석가를 꿈꾸는 분 좋은 데이터를 직접 확보하는 능력은 AI와 데이터 분석의 핵심입니다. 웹 크롤링은 필수 기반 기술이며, 이 책은 실무형 인재로 성장하기 위한 탄탄한 기초를 다질 수 있도록 도와줍니다.
기존 API로는 원하는 데이터를 얻기 어려운 실무자 제한적인 API에 답답함을 느꼈다면, 웹 스크레이핑을 통해 필요한 데이터를 직접 수집하고 정리하는 방법을 배울 수 있습니다. “한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬받아 작성된 서평입니다.”
원하는 정보를 자동으로, 빠르게, 윤리적으로 수집하고 싶은 이들을 위한 웹 크롤링의 바이블
요즘 인터넷 속 세상은 데이터의 바다라고 할 만큼 수많은 웹사이트에 정보가 넘쳐나고, 이러한 정보 홍수 속에서 필요한 부분만 쏙쏙 골라내는 일은 그리 쉽지 않습니다. 웹 크롤러는 이러한 일을 하기 위해 등장했지만 웹 크롤링이라고 하면 어렵고 복잡해 보일 수도 있습니다. [파이썬으로 웹 크롤러 만들기]는 이러한 막연함을 통쾌하게 벗어던지게 해 줄 수 있는 도서 입니다. 웹 크롤링 입문자부터 실무에서 데이터 수집을 직접 다루는 중급자까지 찐 도움이 되는 관련 분야 필독서 이며, 세 판이나 개정되면서 그 가치를 인정받고 있는 표준서 입니다.
이 책의 대상은, * 파이썬 기초는 알지만 웹 크롤링은 처음인 분 * 웹에서 원하는 정보를 자동으로 모으고 싶은 분 * 업무상 웹 데이터를 디테일하게 수집해야 할 필요가 있는 개발자 * 마케팅 이나 시장 분석을 위해 실제 데이터 활용이 필요한 업무를 하는 분 * 웹 스크래핑의 윤리 및 법적인 문제도 고민하고픈 성숙한 웹 크롤리언 정리를 하면 단순한 코딩 체험을 넘어 인터넷 속 [정보수집의 기술]을 본격적으로 배우고 싶은분이라면 이 책은 좋은 선택입니다.
이 책을 통해 얻을 수 있는 것은, * 웹 크롤링의 원리부터 고급 기법까지 : HTML, CSS, 자바스크립트의 구조는 물론, 웹페이지가 어떻게 구성되고 데이터가 어떤 식으로 요청되고 내 웹브라우져로 도착하는지 실전 예를 통해 기법을 익힐 수 있습니다. * 파이썬 웹 크롤러 만들기 : BeautifulSoup, Scrapy, Selenium, Requests 등 크롤링의 주요 라이브러리를 사용하고 실습합니다. * API 활용, 이미지 텍스트 인식, 병렬처리 등 최신 기술 커버 : 요즘 웹은 단순하지 않습니다. 자바스크립트로 동작하는 웹페이지, 챕챠 등 차단 시스템, 함정 피하기, API 응답 처리 등 복잡한 기술도 배우게 됩니다. * 웹 크롤링 윤리와 법적 이슈 : 저작권, robots.txt, 이용약관, 실제 사례 등을 통해 합법적이고 책임감 있는 크롤링에 대해 배웁니다. * 다양한 저장방식 실습 : 수집한 데이터를 CSV나 데이터베이스, 이메일 등 다양한 방식으로 저장하고 활용하는 방법도 꼼꼼히 알려줍니다. * 결국 인터넷 어디에서든, 어떤 형식이든, 어떤 타입의 데이터든 가져올 수 있는 방법을 알려줍니다.
이 책의 장점은, * 웹 크롤링의 기초부터 이미지 인식, 자연처 처리까지 모든것을 다루고 있으며, * 실제 업무에서 바로 적용 가능한 수준일 정도로 코드 예제가 구체적이고, * 3판으로 개정되면서 최신 웹 환경과 기술 스택이 반영되었고, * 단순히 기술을 나열하는 개발서적 범위를 넘어 윤리적 문제까지 고려하여 실무 경험이 있어야 알 수 있는 균형있는 감각도 일부 배울 수 있고, * 마지막으로 파이썬 문법을 알고 예제를 따라할 수 있는 수준이라면 책 전체를 별도 도움 없이 충분히 혼자 따라할 수 있는 난도와 구성으로 되어 있습니다.
많은 장점에도 불구하고, * 파이썬의 쉬운 예제도 도움없이 따라하기 힘든 완전 초보에게, 이 책은 문법 설명까지 전달해 주지는 않으므로 미리 기초 파이썬 학습이 필요하고, * 파이썬 이외 언어에 대해서는 고려하고 있지 않으며, * 각 주제들, 예를 들어 Selenuim이나 Scrapy 등 한가지 기술에 대한 깊이 있는 심화학습을 원한다면 다른 학습이 별도로 필요합니다.
웹 크롤링에서 만날 수 있는 분야에 대해 전반적이고 체계적인 입문과 실습 병행이라는 본연의 목적에 완전히 부합한 도서입니다.
이 책의 활용가치를 더욱 높일 수 있는 팁을 꼽자면,
* 각 챕터마다 풍부한 코드 예제가 있습니다. 책을 읽을 때 주피터 노트북으로 타이핑하며 실습하면 이해가 빠릅니다. 눈팅 보다는 손가락 입니다. * 앞 챕터를 반드시 이해해야 뒷 챕터를 이해할 수 있는 구조가 아닌, 일요일 아침 서프라이즈 처럼 챕터들을 교차하며 원하고 흥미있는 부분부터 먼저 봐도 무방합니다. * GitHub의 예제 코드를 참고하면 빠르게 훑어 볼 수 있습니다. * 보다 깊이 공부할 수 있는 방법은, 예제를 통해 라이브러리 등 사용법이 넌즈시 이해 갈 때 쯤 해당 기술의 공식 문서를 병행하여 참고하면 매우 폭넓은 학습이 가능합니다.
본 도서는 데이터를 다루는 모든 이들에게 폭넓고 실용적이며 최신의 기술을 배양할 수 있는 좋은 방법입니다. 이미 파이썬 문법을 알고 있는 이들에게는 정보 수집이라는 마법을 제대로 구사할 수 있게해 주고, 단편적 자료 다운로드 기술을 넘어 웹 크롤링을 제대로 할 줄 아는 사람으로 성장시켜 줍니다. 파이썬은 배웠고 이걸로 뭔가 해보고 싶은 분들, 데이터 수집은 하고 싶은데 막막한 분, 크롤러를 더 스마트헤가 만들고 싶은 분들에게 추천합니다. 다음번 프로젝트에 데이터 크롤링 기술 구현을 시작하기 전에 읽어 보세요.
웹 크롤링에 예전부터 관심이 많았지만, 막상 시작하려니 어렵게만 느껴졌다. 파이썬으로 웹 크롤러 만들기(3판)는 그런 나에게 딱 맞는 입문서였다. 책은 파이썬 기초부터 웹의 구조, HTML 태그 분석까지 친절하게 설명해준다. 처음에는 단순한 크롤링으로 시작해서, 점점 더 복잡한 실전 예제로 이어지는 흐름이 좋았다. 크롤링 중 마주칠 수 있는 문제들(IP 차단, 로봇 배제 정책 등)에 대한 현실적인 설명도 도움이 됐다. API를 활용한 데이터 수집이나, 스케줄링으로 자동화하는 방법까지 다루는 점이 특히 유용했다. 웹 데이터를 수집해 활용하고 싶은 사람이라면 이 책이 좋은 출발점이 될 수 있다. 복잡한 설명 없이 실전 위주로 배우고 싶은 사람에게 추천하고 싶은 책이다.
인터넷 초창기 웹브라우저로 넷스케이프가 큰 인기를 누리던 시절이 있었다. 당시에는 보안 개념이나 기술이 많이 부족했던 시절이라서 걸핏하면, 사이트가 뚫렸다. 우연히 해킹 아닌 해킹을 하는 바람에 그 회사에 전화해서 문제점을 알려준 기억도 난다.
그리고 그때는 멋진 사이트나 관심 있는 내용을 담은 사이트가 있으면, 아예 사이트 전체를 통째로 다 긁어 오는 일이 비일비재했다. 그걸로 어떻게 만들었나 공부하기도 하고, 필요한 정보만 따로 편집해서 보관하기도 했었다. 처음엔 수작업으로 했는데, 나중에 전문 툴이 많이 등장했다. 빅데이터나, 인공지능 AI와 같은 개념이 전혀 없었는데도, 다들 본능적으로 데이터의 가치만큼은 무의식적으로도 느끼고 있었던 거 같다.
이젠 보안 기술이 높아져 어려워진 부분도 많아졌고, 지적 재산권 등 법적인 부분도 따져가며 긁어 와야 하지만, 크게 봤을 때, 현재의 웹 스크레이핑과 별반 차이가 없어 보인다.
지금은 필요한 정보가 있으면, 여기저기 돌아다니지 않고, 바로 인공지능 서비스를 이용하고 있다. 물론 이것도 한계가 있다. 인공지능이 거짓말도 하고, 의외로 학습 안 된 부분도 많이 발견된다. 그렇기 때문에 업무나 나에게 필요한 정보를 맞춤형으로 가져올 수 있어야 한다.
이 방법을 알려주는 책이 바로 라이언 미첼의 '파이썬으로 웹 크롤러 만들기'다. 이 책은 파이썬을 사용하여 원하는 데이터를 가져오는 다양한 방법을 매우 자세히 알려준다. 단순히 방법만 알려주는 것이 아니라, 인터넷의 작동 원리, 즉 네트워킹 구조, HTML, CSS, 자바스크립트 같은 것을 살펴보고, 웹 스크레이핑의 법적 범위도 알아본다.
법이란 단어를 듣게 되면, 뭔가 불편할 수 있지만, '파이썬으로 웹 크롤러 만들기'가 정리한 내용을 보고 있으면, '웹 스크레이핑을 이런 곳, 이렇게도 써?'하는 몰랐던 사용처와 방법을 알게 해줘서 의외로 재미있는 파트였다.
'파이썬으로 웹 크롤러 만들기'에서 알려주는 웹 스크레이핑 방법은 조금씩 조금씩 확장해가는 점진적인 형태로 알려준다. BeautifulSoup 라이브러리 설치하고, 그것을 정적 페이지 하나 분석에 이용해 보고, 하나의 도메인 그리고 전체 사이트, 인터넷으로 확장시킨다.
이때 중간중간 정규 표현식 같은 파이썬 문법에 대한 것도 다룬다. '파이썬으로 웹 크롤러 만들기'라는 책 제목 때문에 파이썬 기초부터 배우는 것으로 오해할 수 있는데, 이 책은 초중급을 대상으로 한다. 그래서 아주 기초적인 파이썬 문법은 가급적 다루지 않고 있다. 그렇지만, 코드마다 설명을 자세히 하고 있어 이해도 쉽고, 필요에 따라 중간중간 파이썬 관련 문법도 다루고 있고, MySQL, CSV, PDF, 워드파일, 판다스 등 관련 라이브러리와 사용법 설명도 잘 되어 있다.
다른 파이썬 학습서 중에는 웹스크레이핑를 한 파트로 다루는 것도 있는데, 거기서는 배운 파이썬 문법을 활용해 보는 정도, 수박 겉 핥는 기분으로 다루는데, '파이썬으로 웹 크롤러 만들기'에서는 진짜 별별 것을 다 다룬다. 자바스크립트 스크레이핑, API를 통한 크롤링도 자세히 알아보고, 아예 이미지를 텍스트 인식해서 텍스트 스크레이핑을 하기까지 한다.
이것이 끝이 아니다. 쿠키 처리, TLS 핑커프린팅, 타이밍 처리, 허니팟 피하기 등 이런 것들은 다양한 웹 스크레이핑 경험이 없으면, 말할 수 없는 저자만의 내공이 고스란히 담겨있는 부분들이다. 중요한 용어나 주의할 것과 같은 저자의 조언은 박스나 CAUTION 코너에 담았다. 게다가 '파이썬으로 웹 크롤러 만들기'는 이번 3판을 통해 지금과 안 맞는 것들은 손을 봤다고 한다.
웹 스크레이핑 구현이 필요한 분에게 '파이썬으로 웹 크롤러 만들기'는 무척 요긴한 책이 될 것이다. 아울러 파이썬 입문하고 프로그래밍 실력을 좀 더 높이고 싶은 분에게도 매우 좋은 책이다. 파이썬뿐만 아니라, 다른 언어 쓰는 분도 웹 스크레이핑 기법을 전체적으로 이해는데 많은 도움을 줄 것이다. 개인적으로는 무모하기만 했던 나의 넷스케이프 시절을 떠올리며 재미있게 본 책이었다.
웹 크롤러와 관련된 여러 책과 데이터 분석 책의 초반에 나오는 스크레이핑 부분을 통틀어도 이 책은 웹 크롤러 분야의 압권이라고 생각한다.
검색엔진 솔루션 업계에 근무하면서 수많은 사이트를 수집하였다. 고객의 요구 사항을 충족시키기 위해서 검색 결과 페이지(SERP), 사이트의 게시판 검색 결과 페이지, 특정 사이트 전체, 사이트의 특정(게시판) 게시글 전체, RSS(Really Simple Syndication), OPENAPI 등을 수집하였다. 수집한 이후에는 전처리를 진행한 후 결과 데이터를 파일이나 DB에 저장하고, 모니터링과 유지관리를 진행한다. 그동안 회사의 IP가 차단되기도 하고 일부 사이트는 원인을 모르고 수집이 안 되는 경우도 있었다. 이 모든 일련의 과정을 이 책에서는 한 눈에 알아보기 쉽게 정리하였고 풀리지 않는 문제에 관해 명쾌한 해답을 알려 준다. 내가 작업한 프로그래밍 언어는 파이썬이 아니었지만 굉장히 재미있게 읽었고, 책을 읽는 동안 파이썬이라는 언어는 전혀 문제가 되지 않았다.
생각해 보면 웹 크롤러는 프로그램의 종합 예술과도 같다. HTML, CSS, JAVASCRIPT는 당연히 알아야 하며, 네트워킹과 수집 대상의 인프라도 고려해야 한다. 데이터베이스와 모니터링을 할 수 있는 관리자 프로그램, 웹 기술이 발전함에 따른 AI OCR 기술, 정규표현식, LLM을 활용한 데이터 전처리도 고려할 수 있다. 이 모든 내용이 이 한권에 있다는 것이 정말 놀랍다.
프로그래밍, 특히 파이썬을 몰라도 전체적으로 내용이 쉽게 구성되어 있다. 파이썬 코드도 어렵지 않다.
웹스크레이핑의 역사와 작동원리, 활용 방안, 웹 크롤러 모델 설계, 실습 코드까지 한 권에 담고 있다.
웹 스크레이핑 실습 코드는 실무에 바로 사용해도 될 만큼 커버리지와 완성도가 높다.
평소에 궁금했던 웹 스크레이핑의 저작권, 합법성과 윤리적인 내용을 포함하고 있다.
제가 평소에 좋아하는 책 속에 책소개가 많이 포함되어 있다.
책의 구성
이 책은 2개 PART, 20개 장으로 구성되어 있다. 1부에서는 웹 스크레이퍼의 개념과 개발 시 고려해야 될 내용, 일반적인 웹 크롤러에 관해 설명하며, 2부에서는 수집이 까다로운 다양한 주제를 가지고 심층적으로 접근한다.
PART 1 웹 스크레이퍼 제작
CHAPTER 1 인터넷 작동 원리 - 여기서도 보게 되는 네트워크 OSI 모델과 HTML, CSS, JAVASCRIPT, 웹 브라우저 개발자 도구의 개념을 설명한다.
CHAPTER 2 웹 스크레이핑의 합법성과 윤리 - 저작권 문제와 침해와 관련된 사례 연구, robots.txt의 개념을 설명한다.
CHAPTER 3 웹 스크레이핑 활용 분야 - 이커머스(마케팅), 학술 연구, 제품 개발, 여행, 영업 등의 다양한 활용 분야를 설명한다.
CHAPTER 4 첫 번째 웹 스크레이퍼 - 주피터 노트북에서 BeautifulSoup를 사용하여 웹페이지를 수집해 본다.
CHAPTER 5 고급 HTML 분석 - 내가 원하는 사이트를 수집하기 위한 BeautifulSoup을 다양한 기능을 설명한다.
<1부 웹 스크레이퍼 제작, 5장 고급 HTML 분석, p102~p103>
CHAPTER 6 크롤링 시작하기 - 전체 사이트를 수집할 수 있는 방법을 설명한다.
<1부 웹 스크레이퍼 제작, 6장 크롤링 시작하기, p122~p123>
CHAPTER 7 웹 크롤링 모델 -수집 대상에 따른 웹 크롤링 모델 패턴을 설명한다.
CHAPTER 8 스크레이퍼 - 스크레이피 프로그램을 사용하여 웹 스크레이퍼를 만든다.
CHAPTER 9 데이터 저장 - 수집한 결과를 저장하기 위해 파일, 데이터베이스, 이메일 전송 코드를 설명한다.
PART 2 고급 스크레이핑
CHAPTER 10 문서 읽기 - 인코딩된 텍스트 파일, CSV, PDF, MS 오피스 문서 읽는 방법을 설명한다.
CHAPTER 11 지저분한 데이터 다루기 - 기본적인 전처리 방법과 판다스 패키지를 활용한 전처리 방법을 설명한다.
CHAPTER 12 자연어 읽고 쓰기 - 수집한 문서에서 유의미한 통계적인 분석 결과를 도출하는 방법을 설명한다.(NLTK)
<2부 고급 스크레이핑, 12장 자연어 읽고 쓰기, p244~p245>
CHAPTER 13 폼과 로그인 뚫기 - 인증이 필요한 사이트를 수집할 수 있는 방법을 설명한다.
CHAPTER 14 자바스크립트 스크레이핑 - 자바스크립트로 동작하는 동적인 웹페이지를 수집하는 방법을 설명한다. (셀레니움)
CHAPTER 15 API를 통한 크롤링 - API의 개념과 인터넷에서 제공하는 오픈API를 활용하는 방법을 설명한다.
CHAPTER 16 이미지 처리와 텍스트 인식 - CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)를 인식하는 방법을 설명한다.
<2부 고급 스크레이핑, 16장 이미지 처리와 텍스트 인식, p322~p323>
CHAPTER 17 스크레이핑 함정 피하기 - 스크레이핑을 막는 프로그램을 회피하는 방법을 알아본다.
CHAPTER 18 스크레이퍼로 웹사이트 테스트하기 - pytest와 셀레니움으로 운영 중인 웹페이지를 테스트하는 방법을 살펴본다.
<2부 고급 스크레이핑, 18장 스크레이퍼로 웹사이트 테스트하기, p352~p353>
CHAPTER 19 병렬 웹 스크레이핑 - 멀티 쓰레딩, 멀티 프로세싱으로 처리하는 기법을 설명한다.
CHAPTER 20 웹 스크레이핑 프록시 - IP 주소 차단을 위한 우회 프로그램과 원격 호스팅, 프록시 제품의 장단점을 설명한다.
인용
웹 스크레이핑 프로젝트에 임할 때는 항상 스스로에게 다음과 같은 질문을 던져야 합니다.
- 지금 내가 처한 문제는 무엇인가?
- 어떤 데이터가 문제 해결에 도움이 되고, 어디에서 그걸 찾을 수 있나?
- 웹사이트는 이 데이터를 어떻게 표시하나/ 웹사이트의 코드 어느 부분에 이 정보가 들어있는지 정확히 파악할 수 있나?
- 데이터를 어떻게 정확히 찾아서 가져올 수 있을까?
- 데이터를 유용하게 만들려면 어떻게 처리하고 분석해야 할까?
- 이 방식을 더 좋게, 더 빠르게, 더 견고하게 개선하려면 어떻게 해야 할까?
<20장 웹 스크레이핑 프록시, p393>
소감
웹 스크레이핑을 하고자 계획하거나 웹 크롤러에 관심이 있으신 분은 꼭 읽어보길 추천 한다. 기존의 웹 크롤러를 개발하셨던 분들도 최신 기술을 포함하여 무지의 무지(Unknown unknown), 즉 어떤 문제나 정보에 대해 모르고 있다는 사실조차 모르는 상태를 벗어나도록 이 책이 도움을 줄 것이다. 저자의 경험은 단순한 데이터 수집 차원이 아니라 수집을 왜 해야 하며, 어떻게 해야 하고, 활용은 어떻게 하며, 앞으로 무엇을 해야 하는지에 관해 구체적인 해답을 알려준다.
이 책은 웹 스크레이핑의 기초부터 고급 기술까지 포괄적으로 다루고 있으며, 데이터 수집과 활용을 원하는 독자들에게 유용합니다. 총 20개의 챕터로 구성되어 있으며, 각 주제는 실용적인 예제와 함께 설명되어 있습니다.
첫 부분에서는 인터넷의 작동 원리와 웹 기술의 기초, 즉 HTML, CSS, 자바스크립트에 대한 설명을 통해 웹 스크레이핑의 기본 지식을 제공합니다. 법적 및 윤리적 측면을 강조하며 저작권, 상표권, robots.txt 파일의 중요성을 다루어 안전한 스크레이핑을 유도합니다. 다양한 활용 분야를 소개하며 이커머스, 학술 연구 등에서의 적용 사례를 통해 독자가 실용성을 이해할 수 있도록 돕습니다.
중반부에서는 주피터 노트북과 BeautifulSoup을 활용한 첫 번째 웹 스크레이퍼 제작 방법을 상세히 설명하고, 스크레이피 라이브러리를 이용한 데이터 수집 방법과 다양한 데이터 저장 형식에 대한 설명도 포함되어 있어 실무 적용 가능성을 높입니다. 후반부에서는 자바스크립트 스크레이핑, API 활용, 이미지 처리 및 텍스트 인식에 대한 내용을 다루며 다양한 기법과 도구를 소개합니다.
특히, PART 2의 고급 스크레이핑에서는 웹 크롤링을 통해 수집한 데이터들을 판다스와 같은 패키지를 이용해 가공하고 MySQL 같은 데이터베이스에 저장하는 방법을 상세히 설명합니다. 이처럼 데이터 수집 후 가공 및 저장까지 다룬 점이 인상적입니다.
이 책은 초보자뿐만 아니라 경험자에게도 도움이 될 수 있으며, 웹 스크레이핑의 기초부터 고급 기술까지 폭넓게 다루고 있어 추천할 만한 도서입니다. 체계적인 구성과 실용적인 예제로 초보자도 쉽게 이해할 수 있습니다. 하지만 일부 내용의 깊이가 부족할 수 있으며, 특정 라이브러리에 편중되어 있어 다른 도구에 대한 정보가 부족할 수 있습니다.
결론적으로, 이 책은 웹 스크레이핑을 배우고자 하는 사람들에게 매우 유익한 자료입니다. 기본 개념부터 고급 기술, 윤리적 고려사항까지 폭넓게 다루어 안전하고 효과적으로 웹 데이터를 수집할 수 있도록 돕습니다. 데이터 수집에 관심이 있는 모든 분들에게 추천할 만한 도서입니다.
"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을 저장하여 중복 방문 방지 등등도 소개된다.
저장되지 않은 데이터는 웹 크롤링의 의미가 없다. 그러므로 저장 방법을 숙지하는 것은 인사이트에 반드시 필요하다.
다만, 예제에 나와 있는 웹 사이트 서버를 찾을 수 없어, 예제 실습에 초보자들이 헤맬 것 같다.
책은 크롤링을 단순한 기술적 과정이 아니라, 데이터 수집과 활용이라는 더 넓은 관점에서 풀어낸다. 크롤링을 할 때 고려해야 할 접근 방식, 데이터를 효과적으로 수집하는 전략, 그리고 그 과정에서 부딪힐 수 있는 문제들까지 체계적으로 설명하고 있었다. 단순히 "이렇게 하면 데이터를 가져올 수 있다"는 수준이 아니라, 크롤링을 하나의 “설계 과정”으로 바라볼 수 있도록 해주는 점이 특히 인상적이었다. 덕분에 나 역시 새로운 관점에서 크롤링을 되돌아보게 되었고, 기존의 방식이 얼마나 단기적인 해결책에 치우쳐 있었는지 깨닫게 되었다.
처음 이 책을 펼쳤을 때는 그냥 파이썬으로 데이터를 긁어오는 방법만 간단히 알려주는 줄 알았다. 그런데 막상 읽어보니 꽤 체계적으로 구성되어 있어서 놀랐다. 책은 크게 두 파트로 나뉘는데, 앞부분은 웹이 어떻게 작동하는지, HTML이 뭔지, 웹에서 데이터를 가져올 때 어떤 식으로 접근해야 하는지를 친절하게 설명해준다. 특히, 스크레이핑이 불법인가요? 같은 질문에 대한 윤리적인 이야기까지 담겨 있어서 흥미로웠다.
중간부터는 본격적으로 코드를 짜면서 웹 페이지에서 필요한 데이터를 추출하는 실습이 이어진다. 예를 들어, BeautifulSoup을 써서 뉴스 기사 제목을 가져오거나, 셀레니움을 활용해서 자바스크립트로 만들어진 페이지에서 데이터를 긁어오는 식이다. 뒤로 갈수록 API를 통한 데이터 수집, 이미지에서 글자 인식하기(OCR), 크롤링 방지 우회 같은 고급 주제까지 다뤄서 꽤 실전적이다.
나는 웹 크롤링을 처음 공부해보는 입장이었는데, 이 책은 기초부터 차근차근 쌓아가게 도와줘서 입문자에게 좋다고 느꼈다. 특히 ‘코드를 그냥 따라 치는 게 아니라, 왜 이렇게 쓰는지’를 설명해줘서 이해하는 데 도움이 됐다.
물론 파이썬 기초는 어느 정도 알고 있어야 따라가기 수월하고, 셀레니움이나 API 부분은 처음 보면 조금 헷갈릴 수도 있다. 하지만 예제가 워낙 잘 돼 있어서 몇 번 돌려보면 감이 온다.
개인적으로는 그냥 웹 페이지를 보기만 했던 내가, 그 안에서 데이터를 직접 가져오고 자동화까지 할 수 있게 된 게 신기했다. 실제 졸업작품이나 데이터 수집할 때도 쓸 수 있을 것 같아서 꽤 유용했다.
코딩을 처음 배울 때 보통 html 혹은 파이썬으로 나뉘고는 한다. 필자는 프론트엔드 쪽으로 갈만큼 html과 css를 더 좋아했어서 그런지, 파이썬을 배우다 보면 ’이걸 어디에 써먹을 수 있을까?’란 생각이 들고는 했다. 하지만 괜히 인기있는 언어가 아니듯, 파이썬으로 할 수 있는 건 굉장히 많다. 그 중에서도 가장 대표적인 것 중 하나이 바로 '웹 크롤링'이다. 웹에서 원하는 정보를 자동으로 수집하고 뉴스 기사, 쇼핑몰 정보, 게시판 글 등 흩어져 있는 데이터를 한데 모아보는 건, 꽤나 흥미롭고 강력하다.
하지만 웹 크롤링이 처음인 사람들이라면 어디서부터 어떻게 시작해야할 지 막막할 거다. <파이썬으로 웹 크롤러 만들기>는 어느정도 파이썬을 알고 있으나 웹 크롤링을 전혀 모르고 있던 입문자를 위해 차근차근 길을 안내해준다.
"
웹 스크레이퍼가 이와 비슷한 상황을 피하려면 어떤 교훈을 얻을 수 있을까요?
아마도 가장 좋은 출발점은 남에게 피해 주는 행동은 하지 말자는 것이겠죠.
<파이썬으로 웹 크롤러 만들기> p.62
"
책은 웹 스크레이핑으로 들어가기 전에 인터넷 작동 원리부터 시작한다. 네트워킹이 어떤 계층이 있는지, HTML과 CSS, 자바스크립트는 뭔지, 개발자 도구는 어떻게 사용하는 건지 등 기본적인 내용들을 알려준다. 여기에 추가로 해당 작업은 데이터를 무작위로 수집하는 것이기에 우리가 침해해야 하지 말아야할 것들 또한 말해준다. 웹 스크레이핑 윤리와 관련된 법적 공방 사례를 말하며 반드시 이 부분을 주의하라고 거듭 말하기도 한다.
어느정도 필요한 조언을 주고 나서는 본격적으로 웹 스크레이핑을 위한 내용으로 넘어간다. 주피터 노트북을 설치하는 것부터 스크레이핑에 필요한 라이브러리, 그 라이브러리를 어떻게 코드에 적용하고 실행하면 되는 지 등등 상세하게 스텝을 나누어 진행된다. 심지어 코드 작성에 필요한 정규 표현식 등도 잘 정리 되어 있다.(감동)
여기에 더 나아가 웹 크롤링을 위한 스크립트는 어떤 패턴을 가지고 있는지, 그 패턴에서 어떻게 점점 확장해나갈 수 있는지를 말한다. 초반에는 간단한 예제로 크롤링의 기본 원리를 익히고, 이후에는 점점 더 실전적인 내용으로 나아가는 것이다. 책은 당연히 여기에서 끝나지 않는다. 파이썬 웹 크롤링 프레임 워크 중 '스크레이피(scrapy)'를 활용하여 스크레이퍼 작성하는 방법을 가르쳐준다.
이외에도 ‘고급 스크레이핑’이라는 이름으로 판다스를 활용해 데이터를 정리하는 방법, API를 이용한 크롤링 등 더 다양한 내용이 담겨 있다. 웹 개발 경험이 있는 사람들에게도 충분히 흥미로운 내용들이 많기 때문에 크롤링에 관심 있는 개발자라면 한 번쯤 읽어볼 만하다.
하지만 무엇보다 이 책을 특히 추천하고 싶은 독자는 파이썬을 어느정도 배웠으나 어떻게 활용해야할 지 감이 오지 않는 독자, 자신만의 웹 크롤러를 차근차근 만들어 가고 싶은 크롤링 입문자에게 이 책을 추천한다. 책을 읽다보면 단 몇 줄의 URL과 내가 쓴 코드만으로 데이터를 쌓는 짜릿한 경험을 통해, 내이를 어떻게 만들고 어떻게 활용할 수 있을지 자연스럽게 감을 잡게 될 것이다.