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

한빛출판네트워크

파이썬으로 웹 크롤러 만들기(2판) : 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법

한빛미디어

번역서

판매중

4.6점 (46명)
좋아요 : 17

웹 어디서든 내가 원하는 데이터를 쏙쏙쏙 

 

웹에 존재한다면 그것이 어떤 형태이든 데이터로 추출할 수 있다. 필요한 무기는 이 책과 파이썬뿐. BeautifulSoup, 셀레니움, 테서랙트 등 강력한 파이썬 라이브러리 사용법과 함께 API, 인증, 이미지 및 텍스트 인식, 로그인 처리 등 웹 크롤링의 기초부터 고급 기법까지 종합적으로 다루는 유일한 책. 실제 업무와 생활에 적용할 수 있는 예제가 가득하다. 2판은 예제를 추가 및 업데이트했고 모던 웹에서 거의 모든 종류의 데이터를 가져오는 방법을 포괄적으로 다룬다.

 

[추천사]

이 책에 나오는 예제와 도구를 이용해 여러 반복 업무를 자동화할 수 있었고, 그 시간을 더 흥미로운 일에 쓸 수 있었다. 결과를 바로 확인할 수 있고, 실제 업무나 생활에서 접하는 문제를 예제로 설명하여 빠르고 쉽게 읽을 수 있었다.

_ 에릭 반위크, 프랭클린 올린 공과대학교 컴퓨터 엔지니어

 

웹에서 데이터를 모으고 싶다는 생각을 한 번이라도 해봤다면 이 책을 읽어보길 권한다. 이미 크롤링을 해본 적이 있다면 더욱 도움이 될 것이다. 크롤링을 막는 페이지를 만난 적이 있다면? 이 책은 크롤러가 ‘인간’처럼 보이게 하는 법도 설명한다.

_ 클리프 추, Carousell 데이터 분석가

 

 

733px_상세이미지.jpg

 

 

라이언 미첼 저자

라이언 미첼

웹 크롤링, 보안, 데이터 과학에 관심이 많은 개발자. 현재 글로벌 펀드사 헤지서브(HedgeServ)에서 시니어 개발자로 근무하고 있습니다. 프랭클린 W. 올린 공과대학교를 졸업했고 하버드 대학교에서 소프트웨어 엔지니어링 석사 과정을 밟았습니다. 어바인(Abine)에서 웹 크롤러와 봇을 만들었고, 링크드라이브(LinkeDrive)에서는 API 및 데이터 분석 도구를 만들었습니다. 금융업 및 유통업 분야에서 웹 크롤링 프로젝트 컨설팅을 하고 있고, 교육과 강연 활동도 활발하게 펼치고 있습니다. 본서 외 저서로 『Instant Web Scraping with Java』(Packt, 2013)가 있습니다.

한선용 역자

한선용

웹 표준과 자바스크립트에 관심이 많은 번역가입니다. 2008년부터 웹과 관련된 일을 했으며, ‘WCAG 2.0을 위한 일반적 테크닉’ 등의 공개 문서를 번역해 웹에 게시했습니다. 한빛미디어에서 『파이썬 크래시 코스』(2023), 『엑셀이 편해지는 파이썬』(2022), 『파이썬으로 웹 크롤러 만들기』(2019) 등을 번역하며 활발하게 활동하고 있습니다.
 

Part I 스크레이퍼 제작


CHAPTER 1 첫 번째 웹 스크레이퍼

1.1 연결

1.2 BeautifulSoup 소개

__1.2.1 BeautifulSoup 설치

__1.2.2 BeautifulSoup 실행

__1.2.3 신뢰할 수 있는 연결과 예외 처리

 

CHAPTER 2 고급 HTML 분석

2.1 닭 잡는 데 소 잡는 칼을 쓸 필요는 없습니다

2.2 다시 BeautifulSoup

__2.2.1 find()와 findAll()

__2.2.2 다른 BeautifulSoup 객체

__2.2.3 트리 이동

2.3 정규 표현식

2.4 정규 표현식과 BeautifulSoup

2.5 속성에 접근하기

2.6 람다 표현식

 

CHAPTER 3 크롤링 시작하기

3.1 단일 도메인 내의 이동

3.2 전체 사이트 크롤링

__3.2.1 전체 사이트에서 데이터 수집

3.3 인터넷 크롤링

 

CHAPTER 4 웹 크롤링 모델

4.1 객체 계획 및 정의

4.2 다양한 웹사이트 레이아웃 다루기

4.3 크롤러 구성

__4.3.1 검색을 통한 사이트 크롤링

__4.3.2 링크를 통한 사이트 크롤링

__4.3.3 여러 페이지 유형 크롤링

4.4 웹 크롤러 모델에 대한 생각

 

CHAPTER 5 스크레이피 

5.1 스크레이피 설치

__5.1.1 새 스파이더 초기화

5.2 간단한 스크레이퍼 작성하기

5.3 규칙에 의한 스파이더링

5.4 항목 만들기

5.5 항목 출력하기

5.6 파이프라인

5.7 스크레이피 로깅

5.8 더 읽을 거리

 

CHAPTER 6 데이터 저장

6.1 미디어 파일

6.2 데이터를 CSV로 저장

6.3 MySQL

__6.3.1 MySQL 설치

__6.3.2 기본 명령어

__6.3.3 파이썬과 통합

__6.3.4 데이터베이스 테크닉과 모범 사례

__6.3.5 여섯 다리와 MySQL

6.4 이메일

 

Part II 고급 스크레이핑


CHAPTER 7 문서 읽기

7.1 문서 인코딩

7.2 텍스트

__7.2.1 텍스트 인코딩과 인터넷

7.3 CSV

__7.3.1 CSV 파일 읽기

7.4 PDF

7.5 마이크로소프트 워드와 .docx

 

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

8.1 코드에서 정리 

8.2 사후 정리

__8.2.1 오픈리파인

 

CHAPTER 9 자연어 읽고 쓰기

9.1 데이터 요약

9.2 마르코프 모델

__9.2.1 위키백과의 여섯 다리: 결론

9.3 자연어 툴킷

__9.3.1 설치

__9.3.2 NLTK를 사용한 통계적 분석

__9.3.3 NLTK를 사용한 사전적 분석

9.4 추가 자료

 

CHAPTER 10 폼과 로그인 뚫기

10.1 파이썬 requests 라이브러리

10.2 기본적인 폼 전송

10.3 라디오 버튼, 체크박스, 기타 필드

10.4 파일과 이미지 전송

10.5 로그인과 쿠키 처리

__10.5.1 HTTP 기본 접근 인증

10.6 기타 폼 문제

 

CHAPTER 11 자바스크립트 스크레이핑

__11.1.1 널리 쓰이는 자바스크립트 라이브러리

11.2 Ajax와 DHTML

__11.2.1 셀레니움으로 파이썬에서 자바스크립트 실행

__11.2.2 그 밖의 셀레니움 웹드라이버

11.3 리다이렉트 처리

11.4 자바스크립트에 대한 마지막 노트

 

CHAPTER 12 API를 통한 크롤링

12.1 API에 대한 간단한 소개

__12.1.1 HTTP 메서드와 API

__12.1.2 API 응답에 대해

12.2 JSON 파싱

12.3 문서화되지 않은 API

__12.3.1 문서화되지 않은 API 찾기

__12.3.2 문서화되지 않은 API 문서화하기

__12.3.3 API 자동으로 찾고 문서화하기

12.4 API와 다른 데이터 소스의 결합

12.5 마치며

 

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

13.1 라이브러리 개관

__13.1.1 필로

__13.1.2 테서랙트

__13.1.3 파이테서랙트

__13.1.4 넘파이

13.2 형식이 일정한 텍스트 처리

__13.2.1 이미지 자동 조정

__13.2.2 웹사이트 이미지에서 텍스트 스크레이핑하기

13.3 CAPTCHA 읽기와 테서랙트 훈련

__13.3.1 테서랙트 훈련

13.4 CAPTCHA 가져오기와 답 보내기 

 

CHAPTER 14 스크레이핑 함정 피하기

14.1 스크레이핑의 윤리에 관해

14.2 사람처럼 보이기

__14.2.1 헤더를 수정하십시오

__14.2.2 쿠키 처리

__14.2.3 타이밍이 가장 중요합니다

14.3 널리 쓰이는 폼 보안 기능

__14.3.1 숨긴 필드 값

__14.3.2 허니팟 피하기

14.4 사람처럼 보이기 위한 체크리스트

 

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

15.1 테스트 입문 

__15.1.1 단위 테스트란?

15.2 파이썬 unittest

__15.2.1 위키백과 테스트

15.3 셀레니움을 사용한 테스트

__15.3.1 사이트 조작

15.4 unittest vs 셀레니움

 

CHAPTER 16 병렬 웹 크롤링

16.1 프로세스 vs. 스레드

16.2 멀티스레드 크롤링

__16.2.1 경쟁 상태와 큐

__16.2.2 threading 모듈

16.3 멀티프로세스 크롤링

__16.3.1 멀티프로세스 크롤링

__16.3.2 프로세스 간 통신

16.4 멀티프로세스 크롤링의 다른 접근법

 

CHAPTER 17 원격 스크레이핑

17.1 원격 서버를 쓰는 이유

__17.1.1 IP 주소 차단 방지

__17.1.2 이동성과 확장성

17.2 토어

__17.2.1 파이삭스

17.3 원격 호스팅 

__17.3.1 웹사이트 호스팅 계정에서 실행

__17.3.2 클라우드에서 실행

17.4 추가 자료

 

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

18.1 상표? 저작권? 특허?

__18.1.1 저작권법

18.2 동산 침해

18.3 컴퓨터 사기와 악용에 관한 법률

18.4 robots.txt와 이용 약관

18.5 세 가지 웹 스크레이퍼 사례

__18.5.1 이베이 vs. 비더스 에지: 동산 침해

__18.5.2 미국 vs. 오언하이머: 컴퓨터 사기와 악용에 관한 법률

__18.5.3 필드 vs. 구글: 저작권과 robots.txt

18.6 미래를 향해 

복잡 다양한 웹에서 우아하게 데이터를 수집하는 방법 A to Z 

 

우리는 생활 속의 많은 부분이 인터넷에서 이루어지는 시대에 살고 있습니다. 그 어느 때보다 많은 데이터로 넘쳐나는 웹 세상에서 필요한 데이터를 가져와 분석하는 일의 중요성도 커졌습니다. 인터넷을 활보하며 데이터를 수집하는 프로그램을 웹 크롤러 혹은 웹 스크레이퍼라고 합니다. 웹 크롤러는 데이터 수집을 자동화하므로 비즈니스 의사 결정에 큰 도움이 되고, 웹사이트 스캐너로 활용할 수도 있어 보안 분야에서도 사용됩니다.

 

웹 크롤링은 인증 같은 웹 기술에 대한 이해는 물론, 데이터 정제, DB 저장 등 여러 기술에 대한 지식이 필요한 분야에 속합니다. 따라서 프로그래밍 스킬을 향상하는 데에 아주 좋은 주제이며, 과거에는 프로그래밍 전문가만이 웹 크롤러를 만들 수 있었습니다. 하지만 파이썬이라는 배우기 쉬운 언어와 쉽게 쓸 수 있는 각종 라이브러리들이 등장하며 이러한 장벽은 무너졌습니다. 기업 사례뿐만 아니라 음원 차트 추출하기, 서울의 기온 데이터 추출하기, 게시판 문서 다운로더 등 주위를 둘러보면 의외로 많은 생활 속 사례를 찾을 수 있습니다.

 

『파이썬으로 웹 크롤러 만들기(2판)』는 웹 크롤링이라는 주제 하나에 집중하는 책입니다. 업무상 웹 크롤러를 만들다 푹 빠진 나머지 회사를 나와서도 계속 웹 크롤러를 만들고 있는 개발자가 썼습니다. 파이썬과 라이브러리를 이용하여 아주 간단한 웹 크롤러를 만드는 것으로 시작해서, HTML, API 등 웹 기술의 기초부터 데이터 정제 및 저장, 자연어 처리, 이미지 및 텍스트 인식 등 고급 기법까지 종합적으로 살펴봅니다.

 

책의 1부는 파이썬과 함께 BeautifulSoup, 스크레이피 같은 라이브러리를 이용하여 아주 간단하게 웹 크롤러를 만들어보며 시작합니다. 나아가 API를 이용한 수집, 데이터를 MySQL로 저장하는 방법, CSV, PDF, 워드 파일을 분석하는 방법까지 필요에 따라 다양한 라이브러리를 활용하여 웹 크롤러를 구현하는 방법에 집중합니다. 위키백과를 크롤링하며 ‘케빈 베이컨의 여섯 다리’(과연 전 세계 사람은 여섯 다리만 거치면 연결될까요?) 문제를 풀어보는 예제도 있습니다.

 

2부는 웹 크롤링을 둘러싼 더욱 흥미로운 주제와 기법을 다룹니다. 웹에서 가져온 지저분한 데이터를 정돈하고 정제하는 방법(오픈리파인), 자연어 처리(NLTK), 폼과 로그인 뚫기(requests), 자바스크립트로 만든 동적 페이지 수집하기(셀레니움), 이미지 처리(필로) 및 텍스트 인식(테서랙트), 웹사이트 테스트(unittest), 원격 크롤링(토어) 등 고급 기법과 라이브러리 사용법을 살펴봅니다. 특히 텍스트 인식은 CAPTCHA, 즉 자동 가입 방지 문자를 우회하는 데 유용하며, 크롤링을 막는 방해물을 뚫기 위한 ‘사람처럼 보이기’ 기법은 아예 한 장을 할애해서 자세히 소개합니다.

 

오늘날 데이터가 넘쳐나는 웹에서 웹 크롤러로 할 수 있는 일은 무궁무진합니다. 필요한 것은 약간의 파이썬 프로그래밍 능력 하나뿐입니다. 나머지는 이 책에서 배울 수 있습니다. 웹 크롤링을 적용하여 업무를 자동화하고 생활 속에서 유용한 통찰을 찾는 데 이 책이 큰 도움이 되리라 믿습니다. 복잡 다양한 웹 세상에서 우아하게 데이터를 수집하고 싶은, ‘일상의 데이터 분석가’를 꿈꾸는 이들에게 이 책을 권합니다.

이 책은 많은 사랑을 받은 1판에 이어 출간된 원서 2판을 기반으로 합니다. 예제를 추가 및 업데이트했고 모던 웹에서 거의 모든 종류의 데이터를 가져오는 방법을 포괄적으로 다룹니다.

 

Web Scraping with Python - 파이썬으로 웹 크롤러 만들기 2판 (2019년 3월 출간)


파이썬을 처음 시작하는 사람들 중 정말 많은 수가 크롤링(Crawling)을 위한 것으로 안다. 학부생 때 주변을 봐도 데이터 분석, 머신러닝, 웹 크롤링 중 하나가 파이썬을 배우는 이유였던 경우를 꽤 자주 봤었다. 4~5년 전이었던가, 내가 만들어서 혼자 쓰려던 툴이 있어서 참고 서적으로 1판을 대충 훑어봤던 기억이 있다. 그 뒤로는 딱히 크롤링 도서를 참고하지는 않고 인터넷을 보며 엉망으로 짜왔는데, 2019년에 이미 2판이 나와있었다. 


사실 파이썬으로 웹 크롤링하는 정보는 인터넷에 워낙 많이 널려있기 때문에 책의 내용을 정리하는 것이 딱히 의미는 없어보이지만, 개인적으로 책 한권을 가지고 훑어본 다음 인터넷을 찾는 것을 추천한다. 오래되었고 꽤 고착화된 라이브러리를 사용할 때는 검색하는 시간을 줄여서 힘을 많이 시간을 아끼자.



책 내용 


"파이썬 크롤링" 이라고 검색하면 제일 처음 나오는 것은 역시 BeautifulSoup 다. 이 책 역시 BeautifulSoup로 1장을 시작한다. 특정 웹페이지를 크롤링하고 HTML을 처리하거나 데이터베이스 MySQL 에 저장하는 등 아주 기본적인 Scraper 를 구현하는 내용을 1장에서 배울 수 있다. 이정도만 해도 사실 혼자 단순하게 정보를 모으기 위한 크롤러 정도는 만들 수 있어서 간단한 토이프로젝트 정도에 활용할 수는 있다.


파트 2 에서는 고급 스크레이핑이라고해서 다양한 문서 형식들 (CSV, PDF, DOCX 등) 을 읽거나 자연어 처리 등을 배울 수 있다. 사실 정말 많이 쓰이는 부분은 챕터 10부터인데, 단순이 데이터를 긁어오는 것에서 벗어나 특정 웹 사이트를 휘젓고 다닐 수 있는 기술들을 배울 수 있다. 어떤 페이지에 로그인을 한다던가 (로그인을 해야만 보이는 데이터들을 긁어 올 수 있게), 쿠키를 처리하는 등 실제 웹사이트를 접근하는 흉내를 내는 법을 배운다. 자연스럽게 Selenium 을 익히게 될 거다. 이렇게 자동화되서 인터넷을 마구 긁고 다니면 당연히 서버 쪽에서는 싫어한다. 그치만 항상 피하는 법은 있는 법. 14장에서는 마치 웹사이트를 크롤링하고 있는 프로그램이 사람처럼 보이게 하기 위해 "스크레이핑 함정 피하기" 를 배우는데, 만능은 아니지만 이까지 배우면 왠만한 원하는 사이트의 크롤링은 할 수 있을 것이라 생각된다.



파이썬 막 배우고 이제 뭐해야 돼? 싶은 사람은 그냥 이 책 보세요.


책이 300페이지가 넘는 분량이지만 파이썬을 이미 아는 사람이라면 생각보다 빨리 읽을 수 있을 것이라 생각된다. 그리고 혹시나 책의 내용이 이해가 안된다라고 생각하면 조금만 검색하면 보다 많은 내용을 쉽게 얻을 수 있다. 다만 친절하게 정리가 잘 안되어 있을 뿐... 기본서로써 하나쯤 구비해놓고 살펴보기에 정말 좋은 책이다. 차라리 파이썬을 막 배운 초심자들이 다음 이런 책을 보고 프로젝트를 한번 해보면, 정말 재밌게 프로그램을 만드는 법을 배울 수 있을 것 같다. 콘솔로 찍는 이상한 건 그만하고...

크롤링 이란 무엇일까? 이 책을 보기 전, 크롤링이랑 인터넷에서 간단하게 이미지나 원하는 글 정도를 자동으로 긁어 주는 정도라고 생각했다. 하지만 이 책을 보고 크롤링으로 생각했던 것보다 더 많은 것들을 할 수 있다는 것을 알았다. 책의 표지를 보면 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법이라고 작게 적혀있다. 작게 적어 놓은 것을 보면 책을 번역하신 분도 자신이 없으셨던 걸까ㅎㅎ...

 

20210822_234148.jpg



책에는 파이썬 소스 코드와 링크 등이 있어서 굳이 한 땀 한 땀 키보드로 코드를 입력하지 않고도 사용할 수 있다. 책 내용은 파이썬과 파이썬 모듈 패키지 등을 사용하여 크롤링을 하는 내용으로, 처음에는 단순한 텍스트부터 책 뒷부분으로 갈수록 CAPTCHA를 자동으로 입력하는 것을 넘어 이미지로 되어 있는 내용에서 텍스트를 읽어 오고 이미지가 저 해상도일 경우 별도의 처리를 한 다음 최대한 정확한 내용을 읽어오는 방법까지도 나와있다. 기대 이상으로 활용도가 많다. 무엇보다 특정 상품의 인터넷 최저가를 찾기 위해 인터넷의 바다를 헤매는 요즘의 나에게 정말 큰 도움이 됐다. 거기다 Mysql에 대한 설명도 있고 설치부터 파이썬과의 연동 방법까지 자세하게 적혀 있다.

 

책 내용의 난이도는 파이썬을 잘 사용할지 몰라서 그런지 중상 정도로 어려운 편이다. 당연하지만 크롤링이 단순하게 뭔가 한다기 보다 인터넷상에서 웹에 있는 여러 가지 데이터를 가져오는 작업이라 각각 분야에 대한 지식도 필요한 부분이다. 그래서 쉽지는 않지만 기본적으로 제공되는 샘플 코드를 조금씩 수정하다 보면 내가 원하는 결과를 얻는 것은 크게 어렵지 않았다. 크롤링을 배우고 싶어서 인터넷 여기저기를 검색하는 것도 좋은 방법 이긴 하지만, 시간을 단축하고 확실히 익히고 싶다면 이 책으로 공부해 보는 것이 좋을 것 같다.

 

wp1.jpg

 

wp2.jpg

 

파이썬으로 웹 크롤러 만들기 2판이 나왔습니다.

웹에는 많은 정보들이 떠돌아 다니고 있습니다. 그러한 정보들을 몰아서 가공하는 능력을 가진다는 것은 앞으로 다가올 혹은 이미 닥쳐온 시대에 꼭 필요한 것일겁니다. 그러한 이유로 다루기 쉬운(?) 파이썬으로 웹 크롤링을 배우는 것은 어쩌면 필요한 능력을 얻는데 가장 쉬운 길일 수도 있습니다. 초판이 나온지 5년이 지난 후 2판이 나온 것은 그러한 필요에 의해 아직도 중요하다 생각하는 기술이라 그럴 것입니다.

또한 웹에서 정보를 모으는 기술은 머신러닝과도 깊은 관련을 가집니다. 자연어 처리가 그것입니다.

이 한권으로 웹 크롤링과 그것으로 모은 정보를 처리하는 모든 것을 배울 수는 없지만 그 문을 여는 것은 가능합니다.

책에 있는 코드를 따라 쳐보며 웹 크롤링을 배워보시길 바랍니다.

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

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

이 책은 웹에 있는 다양한 데이터를 가져오는 여러가지 방법에 대해 다루고 있습니다. 크게 두 장으로 나뉘어져 있는데, 크롤링에 대한 기초개념이나 구성방식, HTML내에서 필요한 정보를 가져오는 방법등을 소개하며 단순한 크롤링을 다루는 첫번째 파트와, 로그인이 필요한 사이트, API, 이미지, 병렬처리 등 비교적 복잡한 크롤링에 대한 내용들이 들어있는 것이 두번째 파트입니다.


책 표지에 초간단이라고 쓰여있지만, 한번 정도는 크롤링을 직접 해봤거나 코드를 보면서 따라해본적이 있는 경험을 가지고 책을 보면 좋을 것 같습니다. 위에서 언급했듯 첫번째 파트에서 기초적인 부분에 대해 소개하고는 있습니다. 하지만 그 내용들만을 가지고 두번째 챕터에 소개되는 내용들을 부드럽게 이해하거나, 원하는 사이트에 직접 적용하여 데이터를 가져오는 것은 쉽지 않을 것 같습니다. 크롤링에 대해 약간은 이해하고 있어야 책을 이해해나가는데 더 수월할 것 같다고 느꼈습니다.


사실 개인적으로 크롤링은 책을 보면서 공부하는 것 보다는, 원하는 사이트에서 데이터를 직접 크롤링하면서 가장 많이 배울 수 있다고 생각합니다. 저도 크롤링을 익힐 때 책이 아니라 여러 사이트를 크롤링해보고, 막히는 부분을 헤쳐나가는 과정에서 가장 많이 배웠습니다. 하지만 본 책도 많은 크롤링 경험을 가지고 작성되었기 때문에, 크롤링하다가 막히는 부분을 해결하는 힌트를 찾거나, 폭넓은 크롤링 방식을 접할 수 있다는 점에서 긍정적이라고 생각합니다.

현대 대부분의 사람들은 웹을 통해 데이터를 수집하고 분석하며 그 결과를 통해 의사결정의 지표로 삼고 있다. 웹은 데이터의 보고이자 거대한 데이터 저상소이기 때문이다. 하지만 웹을 통해 적재적소에서 적시에 원하는 데이터를 수집하는 것 자체가 시간과 비용이 수반 되는 노동집약적 활동이기 때문에 웹은 축복이자 저주의 공간이 될 수도 있는 양면성을 내포하고 있다. 원하는 곳에서 원하는 시간에 훌륭한 데이터를 수집하면 축복이겠지만 반대의 경우에는 웹이라는 공간이 포용하고 있는 수 많은 데이터 덩어리들은 저주이자 재앙이 될 수 있음을 간과할 수 없는 노릇이다. 어떻게 하면 웹에서 시간과 비용을 적게 들의 최소의 노력을 통해 효율적으로 데이터를 수집할 수 있을까? 이런 고민에서 비롯된 산물이 바로 '웹 크롤링' 또는 '웹 스크래핑' 기술이다. 지금 부터 소개할 책은 파이썬을 활용한 웹 크롤링 기술에 대한 다양한 트레이닝 툴킷으로 사용할 수 있는 도서이다. 

이 책은 크게 두 개의 파트로 구성 되어 있는 바, 첫번째 파트는 스크래핑 도구를 제작하는 과정에 대한 내용을 그리고 두번째 파트는 좀더 심화된 고급 스크래핑 기술을 다루고 있다. 


첫째 챕터에서 파이썬 생태계의 대표적인 스크래핑 지원 도구인 BeautifulSoup 패키지에 대해 학습하게 된다. BeautifulSoup을 통해 크롤링의 기본 원리를 익히게 되고 도구 활용에 대한 다양한 사례를 통해 스크래핑에 대한 기술을 확장해 나가게 된다. Scrapy를 통한 크롤링 활용 방법과 크롤링을 통해 수집 된 데이터를 DB에 저장하는 내용을 학습하며 첫번째 파트는 마무리 되고 두번째 파트에서는 본격적으로 고급 활용 기술을 익히게 된다. 


이후 다양한 포맷의 문서 읽기, Dirty Data 정리하기 등의 내용을 심화적으로 다루며 자연어 처리에 대한 주제를 바탕으로 NLTK를 활용하는 방법에 대해서도 학습하게 된다. 폼과 로그인 뚥기, 자바스크립트를 통한 스크레이핑, API를 통한 크롤링, 이미지 처리와 텍스트 인식에 대한 내용으로 주제가 확장 되면서 크롤링에 대한 합법성과 윤리를 끝으로 책은 마무리 된다. 


이 책은 기본적으로 파이썬 기본 문법을 뗀 사람들이 적어도 웹에 대한 기초 지식이 있는 상태에서 학습해야 어느 정도 소기의 성과를 다룰 수 있으리라 생각한다. 그만큼 크롤링 기술에 대한 학습이 결코 만만치 않으며 기초적인 수준에서 벗어나 고급 기술로 확장하기 위해선 다양한 지식이 요구 되기 때문이다. 본 도서는 파이썬 그리고 웹 초보자에겐 크롤링 입문자용으로 적합하지 않겠으나 어느 정도 기반을 갖춘 이들에겐 적어도 크롤링의 첫발을 떼기 딱 좋은 서적이라 생각한다. 


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

 

 

[나의 한줄 추천사]

웹에서 실시간으로 정보 수집 / 변경되는 부분을 자동으로 찾고자 할때 필요한 기술이 바로 스크래핑이다. 스크래핑을 제대로 알고 싶으면 책을 보라.

[ 추천 이유]

스크래핑 관련 내용들을 A-Z 까지 정리된 책이다. 한권이면 궁금한 내용들을 해소할 있다.

 

[내가 찾고자 했던 질문과 대답들]

1.내가 찾고자 하는 부분을 모를 경우 전체 사이트에 대한 " 크롤링" 가능한가?

    - '케빈 베이컨의 여섯다리' 이론으로 연결된 링크를 통해서 무작위 검색을 통해서 해당 웹사이트의 내용들을 크롤링이 가능하다.

2. 크롤링은 법적으로 문제가 없는가?

    - robots.txt 파일을 정의된 부분으로 데이터 수집시 문제가 없다. 크롤링은 구글에서 검색엔진 데이터베이스로 사용하는 기본 기술이기 때문에 문제가 있다면 검색 사이트 자체가 문제가 되는 것이다.

 

3. 크롤링하다가 막힌다면?

    - 사람처럼 보이게끔 하는 "크롤링 체크리스트" 통해서 문제점을 확인 있다. 가령 사람처럼 액션을 취할때 딜레이가 있는데 딜레이 방법 방법으로 흉내내는 것이다.

 

4.샘플 코드로 코딩하고 싶다면?

    - https://github.com/REMitchell/python-scraping

책의 구성

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. 웹 스크레이핑의 합법성과 윤리성

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

느낀점

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

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

추천 독자

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

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

 

파이썬으로 웹 크롤러 만들기/한빛미디어

 

많은 것들이 가능하다는 파이썬이지만 아쉽게도 난 아직 문법을 익히는 중이라, 배열에서 몇 번째에 들어있는 값 찾기 같은 것들만 가능한 수준이다. 예전에 T아카데미에서 크롤러 만드는 수업이 있어 한 번 들어본 적은 있는데, 코드 타이핑만 따라 치니 어찌어찌해 결과물이 나오긴 했는데 거기까지였다. 그 때는 파이썬이 뭔지도 모르고 화면에 뜨는대로 따라 설치하고 따라 코드를 쳤으니 당연한 결과였겠다.

현재는 파이썬을 활용해 어떤 업무를 추가로 할 수 있을지를 살펴보는 중이라 그 때와는 다르게 접근했다.

책에 있는 코드를 따라 치는 대신 어떤 순서로 코드를 확장해가는지를 살펴봤다. 당장 크롤러를 만드는 것 보다 내가 하고있는 업무에 어떤 부분을 연관지으면 좋을지를 찾아보기 위함이었다.

콘텐츠를 실제로 눈으로 볼 수 없고, 나중에 로그나 텍스트로 확인해야 한다는 것은 지금 내가 하는 업무와 많이 닮아있었다. 동일한 템플릿이 존재해야만 데이터가 깔끔하게 수집이 가능하고, 중간에 변주가 일어나는 부분은 수집이 원활하지 못한 부분까지 닮아있었다.

4장에서 웹 크롤링 모델을 만드는 과정 중 체크리스트 작성과 관련한 것들이 있는데, 이 체크리스트는 내 업무와도 많이 닮아있어 여기에도 옮겨 적어본다.

  • 이 정보가 프로젝트 목표에 도움이 되는가? 이 정보가 없다면 프로젝트 진행이 어려운가? 아니면 단지 있으면 좋은 정도이고 없어도 별 영향은 없는가?
  • 나중에 도움이 될 것 같지만 확신할 수 없다면, 나중에 다시 이 정보를 수집하는 건 얼마나 어려울까?
  • 이미 수집한 데이터와 중복은 아닌가?
  • 이 데이터를 이 객체에 저장하는 것은 논리적으로 앞뒤가 맞는가?
  • 계속 나타나는 데이터인가? 아니면 간혹 나타나는 데이터인가? 모든 사이트에 관련성이 있고 계속 등장할 것인가?
  • 데이터가 얼마나 큰가?
  • 데이터가 크다면 분석할 때마다 주기적으로 가져와야 할까? 아니면 가끔씩만 가져와도 될까?
  • 이 데이터는 얼마나 가변적인가? 옷감 패턴처럼 주기적으로 새 속성을 추가하거나, 유형을 수정해야 할까? 아니면 신발 크기처럼 고정적일까?

몇 년 전 어떤 프로젝트를 진행할 때 몇만개의 페이지를 일일이 들어가 구성 요소를 확인하고 분리해야 하는 작업을 한 적 있는데, 그때 파이썬을 알았더라도 결과물이 좀 더 나을 수 있었을까? 라는 질문을 계속 하게 됐다.

유사한 템플릿을 가진 페이지들과 그렇지 않은 페이지들을 파이썬 코드로 1차 분류를 하고, 유사하지 않은 템플릿을 가진 페이지들만 추가로 확인하는 등의 작업을 할 수 있었다면 좀 더 효율화를 할 수 있었을 것 같다. 그때 조금만 더 용기(?)를 내서 프로젝트에 파이썬을 적용해볼걸 그럤다. 지금이라도 늦지 않았다,

우선 이 책을 끝까지 읽고(부끄럽지만 아직 절반정도밖에 읽지 못했다) 현재 운영중인 서비스의 특성을 고려해 크롤러를 만들어볼 생각이다.

 

오늘 리뷰할  책은 파이썬으로 웹크롤러 만들기 입니다.

 

이책을 신청한 이유는 

최근 뉴스에서 공익근무자가 웹크롤러를 이용해서 우체국 등기우편을 자동으로 정리하는 프로그램을 만들어서 시간과 비용을 많이 단축시켰다는 뉴스가 흥미로웠던 부분이 있어서~

파이썬으로 웹크롤러를 간단하게 만들 수 있는지 궁금해서 신청을 해 보게 되었습니다.

 

 

웹크롤러란?

웹크롤러는 스파이더 또는 검색엔진 봇이라고 하며 인터넷에서 콘텐츠를 다운로드하고 색인을 생성하는 것을 말합니다.

구글이 1994년 처음 시작될때 단 두명의 스탠퍼드 대학생뿐이었고 그들이 가진건 낡은 서버와 웹크롤러 뿐이었습니다.( 이 책의 67페이지 내용을 인용)

 

이 글에서 웹크롤러가 무엇인지 정확히 알 수 있는 글입니다.

그렇다면 우리가 웹크롤러를 이용해서 데이터를 수집하면 구글 같은 검색엔진을 만들 수 있나요?

" 작은 규모의 검색사이트는 운영할 수 있지만 구글과 같은 대용량 사이트를 운영하기 위해서는 데이터 관리 기법과 좀더 빠르게 검색을 할 수 있는 다양한 알고리즘 들을 고민하셔야 합니다~" 라는 것이 제 생각이네요.^^

그래도 천리길은 한걸음 부터라고 했습니다.

우리가 구글과 같은 검색 엔진을 만들려고 하면 첫 단추가 바로 웹크롤러 입니다.

일단 데이터를 수집하고 가공을 해야 고객들에게 맞춤 검색이 가능하도록 지원을 해 줄 수 있을것 같네요~

 

이 책의 구성은?

Part I: 스크레이퍼 제작

- Beautifulsoup를 활용하여 HTML 을 가져오는 방법

- 크롤링을 시작하는 방법 : 분석하기 쉬운 위키백과를 가지고 크롤링을 하는 방법에 대해 설명을 하고 있다.

- 웹크롤링 모델 : 어떤 제품 데이터를 수집할때 우리가 수집하려고 하는 속성들에 대해 설계 방법부터 다양한 웹사이트 레이아웃 다루는 방법 등에 대해 설명을 하고 있다.

- 스크레이피 : 크롤러 개발에 최고의 프레임워크인 스프레이피(Scrapy)를 설치 하고 사용하는 방법에 대해 다루고 있다.

- 데이터 저장 : 미디어파일,URL,텍스트 등을 무료 DBMS MySql을 이용하여 저장하는 방법에 대해 다루고 있다.

  

Part II : 고급 스크레이핑

- 문서 읽기 : 인터넷은 주로 텍스트 기반의 문서로 이루어져 있다. 이러한 문서에 대한 인코딩 방법과 csv 파일,pdf 파일,docx 파일 등의 문서를 다루는 방법을 설명하고 있다.

- 지저분한 데이터 정리하기 : 문서를 가져오면 정형화되지 않은 데이터들이 있는 웹사이트들이 많은데 이렇게 정형화 되지 않은 데이터를 어떤 식으로 처리해야 하는지 등의 기법에 대해 설명을 하고 있다.

- 자연어 읽고 쓰기 : 데이터를 다루기 위해서는 특정한 단어, 수 와 같이 정확한 단어를 인식하는 것은 쉽지만 "귀여운 고양이" 라는 검색어가 입력 되었을때 이것을 고양이 라고 인식하기 쉽지 않은데 마르코프모델에 대해 설명을 하고 이러한 것을 다루는 자연어 툴킷을 활용해서 이러한 자연어 처리 방법에 대해서 설명을 하고 있다.

- 폼과 로그인 뚫기 : 로그인 해야 얻을 수 있는 정보에 접근하기 위해서는 로그인과 쿠키 등에 대해서 처리 해야 하는데 이러한 경우 어떻게 처리 하는지 등에 대해 다루고 있다.

 

 

이 책을 읽고~

실제로 웹 크롤링을 하다 보면 상대 서버의 부하때문에 잘못하면 상대 서버에서 IP차단을 당하는 경우도 발생할 수 있습니다.

이 책에서는 하나 하나 실습을 하면서 이것을 실무에 사용하는 경우에는 어떤 점을 조심해야 한다는 충고를 해 주고 있습니다.

 

 

 

실무에 바로 적용할 수 있는 코드는 아니지만 이 책에서는 실무에서 필요한 모든 내용을 담고 있습니다.

HTML 분석 부터 자신이 원하는 데이터 수집시 객체 모델 생성방법, 자연어 처리 방법, 로그인 하여 데이터 수집 방법까지 웹크롤링에서 필요한 기법들을 하나 하나 주옥같은 내용들이 기록되어 있습니다.

 

이 책을 통해서 개념을 익히고 주의 할 점들을 조심한다고 하면 구글 과 같은 검색 사이트를 구현해 볼 수 있을것 같네요.

웹크롤링에 대해 공부하고 싶은 학생들이나 IT업계 종사자 분들이라면 이 책을 선택하시면 후회 하지는 않을것 같네요.

일단 이 책은 Python의 기본 문법은 알고 있는 분들을 위해 쓰여져 있으며 이 책의 예제를 하나 하나 따라서 연습을 하다 보면 웹크롤링 방법과 데이터베이스 구성 방법등의 개념을 익히고 실무에 적용할 수 있는 책이라고 판단 됩니다.

 

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

웹 크롤러를 만들 일이 생겼는데 파이썬은 알고 있었지만 크롤링에 대해서는 문외한이라서 이 책을 읽게 되었습니다. 그리고 이 책을 다 읽기 전에 무사히 크롤링을 마칠 수 있었습니다. 초간단이라는 제목에 걸맞게 빠르게 익힐 수 있는 책입니다.

 

크롤링의 기본도 모르는 독자한테 urllib이나 BeautifulSoup 같은 기본 라이브러리부터 알려줘서 따라할 수 있게 한 것과, 초반 4~6챕터를 읽으면 기본을 익힐 수 있게 구성한 점이 훌륭했고, request, selenium 등의 라이브러리나 API 사용, 원격 스크레이핑을 다루는 고급 내용도 큰 도움이 되었습니다.

 

크롤링, 이 책 한 권이면 된다고 감히 말할 수 있습니다.

웹 크로링은 웹에 있는 데이터를 수집하는 거로만 알고 있었다.

JAVA에서 셀레니움을 테스트 용도로 사용해 본 적은 있지만 본격적인 데이터 수집에는 크게 관심이 없었다.

 

하지만 요즘에는 파이썬으로 사용하는 영역이 넓어지고, 내가 사용하는 맥북에서도 파이썬이 잘 돌아가니

한번쯤은 해봐야겠다는 생각을 했었다.

많이 복잡하지 않고 간단하게 파이썬만으로 크롤링을 할 수 있다는 게 매력적이라 하겠다.

이제 이 책을 보고 좀 더 프로젝트에서 적용할 곳을 고민해 봐야겠다.

 

분석이 기본은 데이터를 쌓는 것이니 쌓은 데이터를 활용하는 방안도 고민해 봐야할 하다.

파이썬은 최근 프로그래밍 입문 언어로 각광받고 있다. 그래서 쉬운 언어, 초보자용 언어라는 이미지가 있을 수도 있다. 하지만 파이썬도 하나의 언어! 수많은 일들을 할 수 있다는 것이다.

특히 AI 분야에서 데이터 처리를 위해서 주로 사용된다. 그 어렵다는 AI에 말이다!

그리고 웹 크롤링도 당연히 가능하다. 이 책은 바로 제목 그대로 파이썬으로 웹 크롤러를 만드는 내용을 다루고 있다. 사실 웹 크롤링 자체는 다른 많은 언어들로도 모두 가능하다. 그런데 이 책은 파이썬은 강력한 장점을 사용해서 한층 더 훌륭한 크롤러를 만들었다고 생각한다.

그 장점이란 바로 파이썬의 데이터 가공 능력이다.

그렇다고 또 너무 어려운게 아닐까 걱정할 필요는 없다. 처음에는 이렇게 아주 간단한 내용부터 다룬다. 단순히 url에 접속해서 받는 내용을 그대로 보여주는 것부터 시작한다.

데이터를 파일로 저장하는 방법도 다룬다. 사실 이것도 특별할 것이 없다면 없는 내용이긴 하다. 하지만 쉽게 CSV 파일을 다룰 수 있어서 편리하다.

그리고 대망의 데이터를 가공하는 부분! 중의 일부이다.

마지막에는 테스트하는 부분까지 다루고 있다. 단순히 웹 크롤링만 하는 것이 아니라 데이터를 수집하고 저장하고 또 불필요한 것을 제거해서 가공한 데이터를 뽑아내는 전반적인 내용을 다루고 있다. 심지어 유닛 테스트까지.

파이썬으로 크로링을 하는 법을 배우고 싶다면 이 책하나만 봐도 끝장을 볼 수 있을 것이다.

최근에 웹 페이지를 자동으로 읽고 실행할 일이 생겼는데, 마침 <파이썬으로 웹 크롤러 만들기(2판)>을 읽게 되어 다행이었습니다. 이 책은 1판을 산 적이 있던 터라 좀 신기했습니다. 1판은 파이썬 기본을 익힌 수준이면 쉽게 시작할 수 있었는데 그새 무슨 내용을 보강했나 궁금해졌습니다.

 

한국은 '웹 크롤링(crawling)'이라는 어휘가 대세라, 저자가 쓰는 '웹 스크레이핑(scraping)'이라는 용어가 볼 때마다 어색합니다. 번역가로서 고민스러웠겠습니다.

 

2판 역시, 파이썬 문법 기초만 알면 웹 크롤링을 따라 개발하도록 친절하게 안내합니다. 기술 배경부터 코딩 예시까지 책을 주욱 쫓아가면 됩니다. 코딩 예시는 CSV 파일이나 DB에 저장하는 기능 구현까지 다루므로 1부 내용만 소화해도 어지간한 웹 사이트 크롤링은 충분히 구현하겠습니다. 파이프라인 같은 용어가 어색하더라도 개의치 말고 책 끝까지 읽어나가길 바랍니다.

 

2부 고급 스크레이핑은 CSV 뿐만 아니라 MS 오피스, PDF 문서를 읽어서 cleansing 같은 전처리를 하고 단순한 문자열 처리만이 아니라 자연어 처리를 통해 비정형 데이터에서 유용한 정형(≒ 수치) 데이터를 추출하는 기능 구현까지 소개합니다. 여기에 쿠키 처리를 포함한 로그온 처리, 자바스크립트 기반 동적 웹 페이지 크롤링에 캡차 통과까지 익히면 RPA(로보틱 프로세스 자동화) 수준 개발도 가능합니다. 저는 이 목적으로 이 책을 펴들었습니다.

 

이 외에 병렬처리로 크롤링 속도 향상, 사람처럼 웹 브라우징하고 원격 서버를 쓰기처럼 차단 당하지 않는 노하우, 웹 크롤링 관련 법적 이슈를 다룹니다. 이 정도면 <파이썬으로 웹 크롤러 만들기(2판)>을 웹 크롤링 백서라고 해도 좋을 정도입니다.

 

인터넷에 웹 크롤링을 다룬 글은 정말 많지만, 필요한 기능을 일일이 찾기는 귀찮습니다. 데이터 분석가, 데이터 과학자를 비롯하여 엔지니어가 아니더라도 자동화를 염두에 둔 지식노동자는 이 책 한 권을 두고 있으면 금방 원하는 기능을 구현할 수 있겠습니다. 파이썬 세상이나 이런 저런 머신러닝 기능이 더 발전하면 3판이 또 나오겠지요? 기대가 됩니다.


최근에 파이썬에 대한 관심이 증가 하면서 여러 분야에서 사용이 되고 있다.

다양한 분야중에 웹 크롤러도 주목을 받고 있다.

나도 관심을 갖고는 있었지만 그저 막연하게만 생각하고 있었다. 어떤 방법들이 있는지, 무엇을 먼저 해야 하는지 모르고 있었다.

그런 의미에서 이 책은 웹 크롤러에 대해서 기초부터 고급까지 차근차근 알아 볼수 있는 책이다.

 

읽으면서 몇가지 필요한 것들에 대해서 생각해 보았다.

 

1. 파이썬에 대한 기초적인 문법들은 알고 있어야 코드를 이해할 수 있다.

2. 웹 에 대해서도 기초적인 코드는 알고 있어야 한다. (html, javascript등)

3. 정규 표현식도 알고 있으면 도움이 된다.

4. 크롤러 라는건 생각보다 간단하지 않다. 인내력이 필요하다. 데이터 분석과 거의 동일한 작업이라는 생각이 든다.

 

그리고 책 마지막 부분에 있듯이 크롤러라는 것이 다른 웹 페이지에 있는 내용들을 수집하는 기술 이기 때문에 저작권 문제가 생길 수 있다. 정기적으로 크롤링 하는 것에 대해서는 반드시 원작자에 허락을 받아야 한다.

 

파이썬으로 웹 크롤러를 만들어 보려고 하는 분들이 많을 거라 생각이 든다. 이책은 그 분들에게 많은 도움이 될것이다.


이 서적에는 여러 데이터를 긁어오고 서비스를 제공할 수 있는 내용이 담겨있다.

2편은 1편에 비해 예제가 추가되었고 모던 웹에서 거의 모든 종류의 데이터를 가져오는 법을 다룹니다.

책을 다 읽지 못했지만 매우 유용했고 조금씩 파이썬을 익히면서 크롤링 후 서버를 열어봐야겠다고 생각했습니다.

이 서적에 관한 이미지나 코드는 한빛미디어 공식 홈페이지에 공유되어있다.(아래 링크)

hanbit.co.kr/support/supplement_survey.html?pcode=B5046562423

파이썬으로 웹 크롤러 만들기 (1).jpg

 

파이썬으로 웹 크롤러 만들기 [2판] #오레일리 #한빛미디어

차근차근 보면서 따라하기 좋은 파이썬 웹크롤러 도서. 

 

웹크롤러는 URL에서 페이지를 가져오고, 페이지를 검사해 다른 URL을 찾고, 다시 그 페이지를 가져오는 작업을 무한히 반복한다. 웹크롤러로 웹의 방대한 자료를 필터링 없이 수집하게 되면 그에 따른 문제가 많이 발생한다. 이 책에서는 원하는 범위에서 원하는 데이터만을 가져오고 DB로 만드는 방법을 친절하게 설명해준다. 

 

 

 

파이썬으로 웹 크롤러 만들기 (2).jpg

 

 

파이썬의 기본을 설명해주기도 하지만 파이썬 기본서로는 사용하지 말것을 당부하고 있으니 주의하자. 

 

Part1에서는 다양한 라이브러리를 이용한 웹크롤러 만들기, API수집, 데이터를 DB로 저장, PDF·word파일 분석방법과 같은 웹크롤링 기초를 다루며 Part2에서는 데이터 정리, 자연어분석, 폼.로그인 뚫기 이미지 처리, 스크레이핑 함정 피하기 등의 고급 기법을 다루고 있다. 

 

오레일리의 다른 프로그래밍 책들과 같이 약간 원론적이며 지루하지만 개념이 알찬 책이라 생각했었다. 

이 책은 파이썬 초중급자 수준에 맞춰 쓰여져 기본에 충실하면서도 본문 내용이 정말 재미있다.

책을 읽어내려가며 '이걸로 ㅇㅇ에 응용해서 ㅇㅇ를 해보면 되겠다!' 같은 생각이 너무 많이 떠올라 매우 흥미로웠다. 

 

 

KakaoTalk_20201024_234302374.jpg

 

 

데이터분석이 IT업계에서 중요도가 높아지면서, 데이터를 모으는 방법도 마찬가지로 중요도가 높아지고 있습니다.

 

데이터가 잘 정리되어있지 않거나, 공식적인데이터 파일이 존재하지 않는 경우에는 데이터를 수집하기위해

 

스크래핑이라는 작업을 해야하는데, 웹 상에서 스크래핑을 자동으로 해주는 도구가 바로 웹 크롤러입니다.

 

웹 크롤러는 예전부터 관심이 있어서 필요할 때마다 구글 검색을 하면서 더듬더듬 만들어본 경험이 있어서

 

책을 읽기 조금 수월했습니다.

 

책은 크게 1장에서 웹 크롤러의 원리와 기초적인 작성법을 알려주고 있고,

 

2장에서는 고급 기술 등을 설명하고 있습니다.

 

1장의 내용은 이미 해본적이 있어서 복습하듯이 읽었는데, 여러가지 데이터소스를 쉽고 간단하게 스크래핑 할 수 있도록

 

상세하게 설명이 되어 있습니다.

 

2장의 내용은 접해본적 없는 내용들이라 더 집중해서 읽게 되었습니다.

 

특히 챕터 14 스크래핑 함정 피하기 와 챕터 17 원격 스크레이핑 부분은

 

실제 크롤러를 만드는데 많은 도움이 되었습니다.

 

마지막 챕터인 18장에서는 스크래핑 자체에 대한 생각을 다시 해볼 수 있게해주는 챕터였습니다.

 

웹 크롤링에 대해 관심이 있거나 웹 크롤러 제작을 하고 있는분들께 꼭 추천 드리는 책입니다.!!!

KakaoTalk_20201022_005737391_11.jpg

 

대상독자 

 

파이썬을 이용해 웹 크롤러를 만들고 싶은 사람

 

​좋았던 점

 

1. 웹 크롤링/웹 스크래핑이 무엇인지 모르는 사람들에게도 이해하기 쉽게 구성된 챕터

2. 매끄러운 번역

3. 다양한 예제, 라이브러리를 통한 코드의 용이한 작성 및 완성

4. 데이터를 다루는 부분에 대한 상세한 챕터

5. 실용적인 예제로써 웹 스크래이핑의 윤리와 합법성에 대한 부록

 

요근래에 파이썬에 대해 많은 관심이 생겨서 혼자하는 파이썬 책과 온라인 강의를 통해  기초를 배우고 공부할 수 있었다. 

그 와중에 웹 크롤링이라는 아주 흥미롭고 재미있는 기법을 알게 되었는데,  처음에는 관심있는 배우의 사진을 한꺼번에 저장하는 방법을 예제를 통해 완성해 작동시켜보았다. 그 이후로 웹을 통해 파이썬을 활용할 수 있는 더 다양한 방법이 뭐가 있을까 검색해보던 중, 데이터 수집과 웹 크롤링(스크래핑) 기법이 밀접한 관계에 있다는 것을 알게 되었고 관련 서적을 읽어 볼 생각을 하게 되었다.  마침 좋은 기회가 있어 이렇게 온전히 웹 크롤링을 전반적으로 다루는 책을 읽을 수 있게 되었다.

아쉽게도 이 책은 초급자가 그대로 따라하면 따라할 수 있겠지만, 그래도 조금은 문법같은 것을 알고 접하는 편이 좋을 것 같다.

먼저 이 책의 모든 내용이나 마찬가지인 웹 스크래핑이란, 데이터를 수집하는 작업 전체를 뜻한다. 웹페이지를 가져와 페이지 내 데이터를 추출하는 것을 뜻한다.

읽어보면서 느낀 이 책의 가장 기초적이면서 핵심적인 내용은 다음 키워드들 인 것 같다.

 

​- API / beautifulSoup

- html 분석

- csv를 통한 문서 저장 및 읽기

- 스크레이퍼(scrapy)

 

​위의 4가지를 통해서 파이썬을 통해 웹상에서의 방대한 양의 데이터를 어떻게 수집하고 잘라내고 저장해서 우리가 원하는 자료로 만들어 내는지를 예제를 통해 학습하고 실행해 볼 수 있다.

 

​완독하고 나니 책을 통해 단순히 사진을 저장하기만했던 과거에서 데이터를 구성할 수 있는 단계로 레벨업할 수 있게 되어서 뿌듯하다.

두세번 더 읽으면 나만을 위한 웹 데이터사전을 만들 수 있을것 같다.

 

 

 

파이썬으로 웹 크롤러 만들기

작가
라이언 미첼
출판
한빛미디어
발매
2019.03.29.

리뷰보기

 
 

KakaoTalk_20200927_170544816.jpg

 

 

크롤링은 아마 10년도 더 전에 첫 직장에서 일할 무렵 개인적인 필요에 의해 접하게 되었다. 당시 구내식당 식단 표를 매번 사이트에 들어가서 확인하기가 귀찮아서 웹페이지에 접근하여 소스를 다 받아오고 특정 문자열로 위치를 찾아 저장해서 보여주는 스크립트를 작성했었다. 시간은 많이 지났지만 지금도 비슷한 수준으로 크롤링을 사용하고 있다. 회사에서 협업 툴 중 하나로 슬랙을 사용하는데, 날마다 IT 뉴스 목록을 채널에 뿌려주는 기능과 특정 종목의 주가 정보를 보여주는 봇도 달아두었다. 자동화를 한다는 것, 그리고 대부분의 정보는 웹에서 캐올 수 있다는 것부터 크롤러의 필요성은 충분히 크다고 생각한다. 크롤링이나 스크레이핑의 범위를 정확하게 알고 있지 않아서 과연 책에서 어떤 기술을 보여주는지 궁금했다. 

 

이 책에서는 웹 소스를 퍼 오는 간단한 크롤링 기능부터 설명을 시작하지만, 끝까지 보면 예상했던 것보다 훨씬 다양한 내용에 대해 깊이 있게 다룬다. 인코딩부터 해서 자연어 처리, 이미지 처리, 이메일에 관한 내용까지 나온다. 여러 라이브러리에 대한 설명도 잘 해주어서 스크랩을 하기 위한 기반 기술을 잘 알게 되었다. 예를 들어 스크레이피라는 도구로 정보를 획득하여 알맞은 형식으로 저장하는 방법이 있다는 걸 배웠다. 사실 본인이 사용했던 크롤러는 데이터를 따로 저장을 하진 않는다. 실시간으로 그때그때 지정한 채널에 정보를 출력해 주기만 하면 되는 것이었다. 하지만 말 그대로 스크레이핑이라고 하면 정보를 추출하고 분석하는 단계까지 고려를 해야 한다. 데이터를 저장까지 했으면 필요 없는 정보를 걸러내는 작업도 필요한데 그런 방법도 설명해준다. 특히 마음에 들었던 부분은 스크레이핑의 윤리라는 주제에 대해서 설명한 부분이다. 필요한 작업을 이해 어떤 행위를 자동화했을 뿐이고, 사람도 마음만 먹으면 많은 부하를 유발할 수 있는데 봇을 쓴다고 해서 문제 되겠어?라고 쉽게 생각하는 경우도 있을 것이다. 하지만 이 책에서는 대상 서버에서 사람처럼 보일 수 있게 하는 방법을 설명해주는 한편, 피해를 입힐 수 있다는 사실에 대해 주의를 주고, 또 자신의 서버가 그러한 공격을 방어할 수 있는 기술도 알려주는 등 다양한 각도에서 접근하고 있다. 제대로 된 크롤러, 스크레이핑을 공부하고 싶다면 적극 추천하고 싶다.

 

내용의 이해에 있어서 파이썬 초보자는 좀 어렵겠다 싶은 생각이 들었다. 언어에 대한 설명은 따로 하지 않는다. 또 크롤링을 처음 접하는 사람에게는 브라우저에서 보이는 페이지 화면과 실제 내가 원하는 추출하고 싶은 정보 등을 그림으로 설명해줬으면 하는 아쉬움이 있다. 대부분 텍스트와 코드로 설명을 하고 있어서 기술에 대한 부분은 이해하기 좋았지만 활용이나 응용을 하기 위한 기획을 위한 그림을 그리기에 조금 어렵지 않나 하는 생각이 들었다.

웹크롤러 처음들어보는 용어라 익숙치않았다. 찾아보니 웹의 데이터를 수집하는 작업전체를 말한다. API를 활용하는 프로그램이나 사람이 직접 웹브라우저를 조작하는 방법만제외하면 어떤방법을 쓰든 상관없다. 가장 널리 쓰는방법은 프로그램을 만들어 웹서버에 쿼리를 보내 데이터를 요청하고 이를 파싱해 필요한 정보를 주출하는 작업을 자동으로 한다. 현실적으로는 웹스크레핑은 데이터분석, 자연어처리, 정보보안같은 다양한 프로그래밍 기술을 포괄한다. 이 책은 웹스크레핑을 소개하는것에 그치지않고 오늘날 웹에 존재하는 거의 모든 종류의 데이터를 수집, 변형, 사용할 수있는 상세한가이드로 읽을 수 있게 나와있다. 파이썬을 전혀 모르면 어려울것같다. 저자가 파이썬초중급자 수준에 맞춰 개념을 설명하고 코드예제를 작성했기때문에 어느정도는 알고 보면 좋을책이다. 인터넷을 통해 원격소스에서 데이터를 수집한다는 목적에 부합하는 선에서 완벽하게는 아니지만 웹스크레이퍼를 만드는데 필요한만큼은 나와있다. 1부는 웹스크레이핑과 웹크롤링에 대해 깊이있게 설명. 2부는 독자가 만들때 유용한 추가주제를 다룬다. 이책을 읽고나서 나만의 웹크롤러를 구현해봐야겠다고 생각했다.

KakaoTalk_20200823_231851179.jpg

 

###  Review

 

데이터의 중요성이 날로 높아져 가는 지금 데이터 수집과 분석에 조금씩 관심을 가지게 되었다. 

'데이터는 양만 많으면 되는거 아닌가' 라는 생각을 가지고 있었는데 이 책을 읽으면서 다양한 데이터 수집경로, 수집방법, 양질의 데이터를 수집하기위한 다양한 고려사항 등을 알게되었다. 

웹을 하던 사람이 아니라 사이트 구조를 분석하고 파악하는 부분에서 조금 당황했지만 계속 보다보니 한결 수월하게 학습을 할 수 있었던 것 같다. 

웹 크롤링을 처음 접하고 데이터에 관심있는 사람이라면 무조건 읽어봐야 할 책인것은 분명한 것 같다. 

책은 파이썬으로 설명을 하고있음으로 파이썬을 알고있는 독자들이라면 좀 더  쉽게 이해할 것 같다. 

본 글은 한빛미디어 출판사 측의 "나는 리뷰어다"를 통해 
 
무상으로 제공받아 작성된 글입니다
 

IMG_6768.jpg

 

 
 
이번에 읽은 책은 파이썬으로 웹 크롤러 만들기입니다.
 
 
 
구글 같은 기업은 어떻게 만들어지나요?
 
"첫째, 수십억 달러를 모아 세계에서 가장 훌륭한 데이터 센터를 만들고 세계 곳곳에 배치합니다".
 
둘째. 웹 크롤러를 만듭니다
 
옮긴이의 말
 
 
 
 
이번에 나는 리뷰어다 8월에 신청한 책인 파이썬으로 웹 크롤러 만들기를 신청하였습니다.
 
 
이 책을 신청한 이유는 평소에 관심 있는 분야의 데이터 셋을 주기적으로 정재 해서 나만의 데이터로 쌓고자 하기 위해 선행지식으로 
 
공부하기 위해 좋을 것 같아서 좋은 기회라고 생각하고 신청하였습니다.
 
 
일단 이 책은 현재 2판으로 개정되어서 나온 책입니다. 1판은 못 봤지만 그래도 평소에 관심 있었던 책이었어요.
 
 
 
이 책의 구성
 
 
이 책은 일단 파이썬으로 예제가 구성되어 있습니다.
 
저자도 파이썬 초중급자 수준에 맞혀서 개념을 설명하고 코드 예제를 작성하였다고 책에 적혀있습니다.
 
 
 
1부에서는 웹 스크레이핑과 웹 크롤링에 대해 깊이 있게 설명하고 책에서 사용할 라이브러리에 중점을 주로 다룹니다.
 
그래도 1부에서는 BeautifulSoup 라이브러리를 이용해서 다양하게 웹에서 가공해서 데이터를 쓰는 법이 주로 다뤄지는데 
 
실제로 직접 예제를 치면서 결괏값을 보고 또한 사이트에서 어떤 부분을 데이터로 가져와서 처리하는지 보면 더욱더 학습이 잘 되실 겁니다
 
예제에 해당되는 사이트에 들어가서 HTML 구조를 보면서 이해를 하시면 더 이해가 잘 돼요.
 
또한 정규 표현식을 다루는 예제도 있고 다양한 크롤링 관련 예제가 있으니 직접 실습해보시는 걸 추천드려요 
 
2부에서는 독자가 웹 스크레이퍼를 만들 때 유용한 추가 주제를 다룹니다.
 
저는 아직 7장을 읽고 있지만 2부에서 다루는 내용은 주로  저자분께서 원형 그대로의 데이터를 분석해서  그 뒤에 숨은 이야기, 웹사이트에서 종종 자바스크립트 계층이나 로그인 폼, 기타 스크랩을 방해하는 것들을 알아본다고 책에 쓰여있습니다.
 
​이 책의 장단점
 
 
장점
 
1. 다양한 예제 및 파이썬 독자들도 이해할 수 있게 초중급으로 작성되어 있는 코드라서 한 줄 읽으면서 이해하기에 좋을 겁니다.
 
2. 중간중간에 나오는 CAUTION 글은 읽다 보면 조금 더 이해가 더 잘됩니다. 
 
3. 그리고 이건 사소하지만 실제로 예제 치면서 명령 포트가 나오니 더욱더 학습효과가 좋았던 것 같아요.
 
​단점
 
1. 거의 잘 돌아가지만 제가 1부에서 몇 개 예제는 파이썬 모듈 import 했을 때 라이브러리가 조금 책이랑 틀려서 툴의 자동완성으로 해결했던 거 같아요.
 
 
그 외에는 평소에 관심 있던 분야라서 딱히 단점이라고는 없던 거 같아요.
 
 
마지막으로
 
 
데이터를 분석하려면 데이터가 있어야겠죠. 이 책을 읽고 나면 
 
평소에 관심 있던 분야의 데이터를 모아서 정재도 하고 원하는 데이터 셋을 구축할 수 있을 것 같아요. 그래서
 
저처럼 데이터에 관심 있는 분들이면 추천드립니다. 직접 예제도 쳐보고 웹사이트 구조를 보고나서 웹 스크레이퍼 구축에 있어
 
많은 경험을 하실 수 있을 것 같아요.
 
 
이 책에 당첨되어 리뷰를 할 기회를 주신 책만 출판사 담당자분께 감사의 뜻을 드리고 
 
추후에 완독했을 때 리뷰 또한 다시 한번 남길 예정입니다.

완독 한 상태가 아니기 때문에 후기라 명하기에는 부족한 감이 있습니다만..

이전에 읽어보았던 크롤링 관련 책들은 아무래도 접근하기 쉽도록 만들기 위해 쓰인 느낌이 많이 있었습니다. 이번에 접하게 된 한빛미디어의 파이썬으로 웹 크롤러 만들기는 분위기가 좀 다른 느낌이었습니다. 번역본이라 그럴지도 모르겠지만 일단 O'REILLY의 원서이기 때문에 책에서 재미를 느끼기엔 약간 어려움이 있었던 것 같습니다.

다른 책들이 현행의 서비스를 크롤링하는 방식으로 접근하기 쉽게 가이드를 해준다는 이점이 있었지만, 서비스가 업데이트될 경우 크롤링이 되지 않는 경우도 있습니다만 파이썬으로 웹 크롤러 만들기는 연식이 좀 되긴 했지만 책에서 따라하는데 문제가 없도록 기존 사이트를 유지하고 있는 것을 알 수 있었습니다.

어떤 과정은 가상머신을 설치해야 하는 등 번거로움도 있었고 따라 하지 못한 부분도 있었고 전체적으로 재미보다는 기본적으로 필요한 부분들에 대해 천천히 공부하는 방식으로 진행되고 있어 따분한 경향이 없잖아 있습니다. 하지만 다른 책들에서는 잘 다루지 않는 부분들(?), 예를 들면 폼과 로그인 뚫기 라던가 API를 통한 크롤링, 사이트 테스트 등 고급 사용법들도 다루고 있습니다.

무분별한 스크랩핑이 법적 문제점도 가지고 있는 만큼 책의 후반부에서는 합법성과 윤리에 대해서도 다루고 있습니다. 파이썬으로 웹 크롤러 만들기는 재미보다는 기초부터 차근차근 접근해 보고 싶으신 분이라면 도움이 되지 않을까 생각이 들었습니다. 그리고, 당연한 이야기일지 모르겠지만 입문 수준의 파이썬 문법만으로 용감하게 접근하기에는 조금 무리가 있다 여겨집니다.



출처: https://minamiland.tistory.com/568 [think of]

혹시 크롤러 아세요.

1600530316256.jpg

 

책의 영어 제목은 Web Scraping with Python 인데요.

먼저 Web Scraping을 알아야 할 것 같아요.

웹 스크레이핑은 인터넷에서 자동으로 데이터를 수집하는 일입니다.

바로 웹을 통해서 스크랩 하는 일을 하는 프로그램이 웹 크롤러입니다.

웹 스크레이핑을 만들기 위해서는 데이터 분석, 자연어 처리, 정보 보안 같은 다양한 프로그램 테크닉을 알아야 합니다.

그래서 사람들이 어디서부터 시작해야 할지 갈피를 잡지 못하죠.

저자는 이런 사람들을 위해서 이 책을 만들었다고 합니다.

웹 스크레이핑 작업에 관한 상세한 가이드를 제공하는 것이 이 책의 목적입니다.

 

중급 이상의 파이선 개발자가 보기에 적당한 책입니다.

남녀 노소 누구나 파이선 기초 지식만 있다면, 이 책으로 구현된 웹 크럴러로 웹에서 많은 데이터를 가져와서

 

쉽게 분석할 수 있습니다.

 

빅데이터나 데이터분석에 종사하고자 하는 분들에게 강추합니다.

 이 책을 읽기 전에, 나는 크롤링을 할 줄 안다고 생각하였다. 하지만, 그것은 착각이고 아주 큰 자만이었을 뿐이었다.

 

 책장을 몇 장 넘기자, 듣지도 보지도 못 한 새로운 세상이 펼쳐졌다. 내 크롤링 실력을 향상시킨 책이라 말하기에는 이 책으로부터 얻은 것들이 너무 많다. 정확하게 말하자면 크롤링 실력이 아니라 '크롤링'이라는 개념 자체를 새로 생각하도록 만든 책이다. 이 책은 그 정도로 나를 성장시켰다.

 

 크롤링에 대하여 깊게, 자세하게 설명하면서도 이를 바로 응용할 수 있도록 쉽게 풀어 설명하였다. 또한, 크롤링을 잘 하는 방법(노하우)를 비롯하여 더 나은 크롤링을 위하여 필요한 모든 것들을 넓게 이야기 해 준다.

 

 책의 번역 상태도 인상깊었다. 적절한 단어 선택과 부드러운 글의 흐름, 읽기 편한 책의 구성은 이 책의 큰 장점 중 하나가 아닐까 싶다.

 

 지금까지도 한빛미디어의 책들을 좋아하고, 선호하였지만 이 책의 계기로 아름다운 번역상태와 탁월한 편집능력에 다시한번 감탄하고 더 좋아하게 되었다.

 

 

파이썬으로 웹 크롤러 만들기 2판.jpeg

 

 

파이썬으로 웹 크롤러 만들기.jpg

 

 

 

웹 크롤링에 더불어 파이썬도 익힐 수 있습니다.

 

이론보다 실무에 가깝습니다.

그렇기에 각 장들을 체계적으로 분류하기보다 웹처럼 서로 연결하고 있습니다.
각 장마다 실무에 적용하기 위해서라도 주제에 필요한 라이브러리나 프로그램을 알려주고 있습니다. 더군다나 역자가 번역할 시점에서 예제의 바뀐 내용과 특징을, 사용할 데이타와 함께, 주석으로 제공하고 있습니다


웹 크롤링과 함께 개발자가 알아야 할 내용들이 곳곳에 있습니다.

예를 들어, 9장 '자연어 읽고 쓰기'에 있는 내용은 머신러닝에까지 닿아 있습니다. 자연어를 인식하는 기초적인 방식을 알려주고, 이러한 내용이 머신러닝으로 어떻게 이어지는지 알려줍니다.



1부는 웹 크롤링을 소개하면서 프로그래밍에서 같이 알아야 할 내용도 같이 얘기하고 있습니다.

모듈 설치와 사용, 정규 표현식, 재귀, 객체, 파일 처리 및 DB 사용.

웹 크롤링이 아니더라도 알아야 할 내용들입니다.


2부는 웹 크롤링을 하며 만날 수 있는 대표적인 상황을 얘기합니다.

먼저 상황을 이해하도록 유도하고 무엇을 어떻게 하는지 알려줍니다.

직접 실행하며 접근할 수 있도록 하면서도 모든 것을 알려주려고 무리하지 않습니다.

그러면서 조금 더 생각하보길 권하기도 하고, 깊이 있게 알기 위한 자료를 소개하기도 합니다

 

7장, 8장, 9장은 텍스트를 어떻게 다루어야 할 지 얘기합니다.
'문서 읽기'에서 텍스트 인코딩과 유니코드를 설명하고 파일에서 텍스트를 어떻게 가져오는지 보여줍니다.
'지저분한 데이터 정리하기'에서 'n-그램'이란 언어학 용어를 사용하여 문자열을 정리하는 방식을 보여줍니다.
'자연어 읽고 쓰기'는 'n-그램'을 적용한 데이터 요약과 '마르코프 모델'을 소개합니다.
마르코프 모델로 웹사이트 링크를 모델링합니다. 그리고 마르코프 체인을 주어진 범위에서 적용하며 만나게 되는 '방향성 그래프'와 '너비 우선 탐색'을 간략하게 언급합니다.
'자연어 툴킷'을 소개하며 텍스트 분석에 어떻게 사용하는지 얘기합니다. 머신러닝의 편린을 살짝 들여다 보는 느낌입니다.

10장, 11장, 12장은 웹 클라이언트 환경에 대응하는 내용으로 제목이 모두 말해 주고 있습니다.
'폼과 로그인 뚫기', '자바스크립트 스크레이핑', 'API를 통한 크롤링'

13장 '이미지 처리와 텍스트 인식'은 텍스트 기반 이미지를 파이썬 라이브러리로 인식하고 사용하는 방법을 얘기합니다.

이론 구현이 아닌 라이브러리 활용 방식을 안내하고 있습니다.
'팔로', '테서랙트', '파이테서랙트'를 조합하여 이미지에서 텍스트를 스크레이핑하는 걸 보여줍니다. 여기서도 라이브러리를 훈련시킨다는 개념이 살짝 나옵니다.

14장, 15장은 스크레이핑의 또다른 활용 방법을 알려줍니다.
'스크레이핑 함정 피하기'는 크롤링 봇이 사이트를 브라우저로 사람이 열어보는 것처럼 보이도록 하는 내용입니다.
'스크레이퍼로 웹사이트 테스트하기'는 단위테스트로 스크레이퍼를 응용하는 걸 보여줍니다.

16장, 17장, 18장은 당장 적용해보기 어렵더라도 알고는 있어야 하는 내용입니다.
'병렬 웹 크롤링', '원격 스크레이이', '웹 스크레이핑의 합법성과 윤리'

 


웹 크롤링의 모습을 한 개발자 계발서입니다.

 

- 서평시작

 

앱에서 사용할 데이터를 데이터를 가져오기 위해서 아주 간단히 BeautifulSoup 를 사용해본적이 있다. 웹페이지 정보를 가져오고 싶은데, 방법을 찾다가 파이썬으로 하면 간단하다고 해서 블로그에서 검색해서 간단히 사용한 적이 있다. 그래서 이 책을 시작 할 때 단순히 BeautifulSoup 사용방법을 배우는 것 만이라면 이정도 책이 필요 없을 것 같은데 하고 생각하였다.

 

- 용어가 헷깔려?

책 제목이 영어로는  Web Scraping with Python, 한글로는 파이썬으로 웹 크롤러 (Web Crawling) 만들기 이다. 실질적으로 같은 용어이긴 한데, 책 말머리에 저자는 최근에 웹 스크레이핑이라는 용어가 더 널리 쓰이므로 책에서도 이 표현을 사용합니다 라고 적어 두었다. 한글로 웹 크롤러라고 표기한건 아마도 한국에서는 웹 크롤러라는 말을 더 많이 사용하기 때문인 것 같다.

 

1) 첫 번째 웹 스크레이퍼

BeautifulSoup 를 소개 하고 설치 하고 사용 한다.

간단히 웹페이지를 연결 하여 데이터를 가져오고 html 내용을 분석하여 원하는 값을 가져오는 것 만이라면 1장만 읽어도 끝날정도로 간단하다.

 

부제로도 써놨지만, 사실상 다 만들어져 있다. 

 

2) 고급 HTML 분석

좀더 복잡하게 BeautifulSoup을 사용하는 방법을 배우고, 필요한 데이터를 찾는데 사용하는 정규표현식에 대한 내용을 다룬다.

 

3) 크롤링 시작하기

단일 페이지가 아니라, 여러 페이지, 여러 사이트를 이동하는 스크레이퍼를 만든다. (말머리에서 저자는 이것을 특별히 크롤러라고 부르기로 하였다.)

 

4) 웹 크롤링 모델

단순히 웹사이트의 내용을 가져오는 것이 아니라, 필요한 데이터의 타입을 모델링 하고 이를 최종적으로 데이터베이스에 저장 하는 내용을 다룬다.

 

기술적인 내용도 있지만, 4.4 웹크롤러 모델에 대한 생각 부분이 읽으면서 참 도움이 되었다.

 

-------------------

4.4 웹 크롤러 모델에 대한 생각 (간단 요약)

인터넷에는 너무나 많은 것들이 있고, 당신에게 그것이 필요한지 어떻게 얻을지 항상 명확히 알기는 어렵다.

 

(1) 여러 도메인에서 유사한 데이터를 수집할 때는 항상 일반화를 시도해야 한다.

(2) 스크레이퍼를 만들 때에는 추후 더 많은 데이터 소스가 추가될 것이라 가정하고, 새 소스를 추가하는데 필요한 노력이 최소화 되어야 한다.

(3) 데이터 조각 간의 연결도 무시해서는 안된다. '유형','크기','주제' 같은 속성이 데이터 원본에 걸쳐 존재하는 정보를 찾고 있다면 이러한 속성을 어떻게 저장,검색,개념화 할 것인가?

-------------------

 

5) 스크레이피

Scrapy (web에서 데이터를 가져오기 위한 프레임워크) 를 사용한다.

 

BeautifulSoup는 가져온 데이터(HTML)를 파싱하는 작업만을 하는데 비하여 Scrapy는 페이지에 대한 규칙을 작성 해두면 자동(?) 으로 링크들을 이동 하며 데이터를 가져온다.

 

6) 데이터 저장

MySql 을 통해 데이터를 저장 하는 법을 다룬다.

 

구글 같은 기업은 어떻게 만들어지나요?

 

첫째, 수십억 달러를 모아 세계에서 가장 훌륭한 데이터센터를 만들고 세계 곳곳에 배치합니다.

 

둘째, 웹 크롤러를 만듭니다.

 

 

이 책은 이 의문에서 시작한다. 데이터센터는 돈이 많이 들어가니까 제껴두고, (구글 정도는 아니지만) 간단한 웹 크롤러는 노력을 하면 만들 수 있다. 그렇다면 웹 크롤러(웹 스크레이퍼)는 어떻게 만들어야 할까? 그 의문을 해결해주는 책이 바로 이 'Web Scraping with Python 파이썬으로 웹 크롤러'이다.

 

인터넷에 돌아다니는 데이터를 잘 정리해서 쉽게 보여주는 사이트가 바로 구글, 네이버다. 구글이 가장 먼저는 아니지만 가장 그럴싸하게 검색 기능을 제공해서 세계 최고의 기업이 되었다. 구글이 되려는건 쉽지 않겠지만 인터넷 상에 돌아다니는 데이터를 잘  활용하면 뭔가 엄청난 일을 할 것만 같다. 이런 생각이 든다면 이 책에서 뭔가 해결책을 찾을 수 있을 것이다.

 

오렐리(O'REILLY) 책이 보통 그러하듯 '파이썬으로 웹 크롤러' 책도 밀도가 있는 책이다. 페이지는 총 350이지만 그 속에 든 내용은 많다. 웹 크롤러에 도전하는 초보자가 앞으로 겪게 될 고생을 덜게해주는 목적으로 쓴 책같다. 바로 웹 스크레이핑을 시도하기 때문에 파이썬 프로그래밍 기초는 따로 설명하지 않는다. 웹 크롤러 직접 제작하고 싶다면 인터넷에 돌아다니는 다양한 정보를 보기에 앞서 이 책을 먼저 읽었으면 좋겠다. 아마 시행착오를 많이 줄일 수 있을 것이다.

 

'파이썬으로 웹 크롤러'는 크게 2개의 파트로 나눌 수 있다. 파트1이 웹 스크레이퍼(웹 크롤러)를 만들기 위해 반드기 알아야할 내용이라면 파트2는 조금 더 깊은 세부 주제를 다룬다. 웹 크롤러가 처음이라면 파트1부터 차분히 읽을 것이 좋다. 파트2도 순서대로 읽으면 좋겠지만 지금 당장 필요가 없는 내용이라면 이런게 있구나 정도만 알고 넘어가도 좋을 것이다.

 

거의 모든 프로그래밍이 그렇듯 파이썬으로 웹 크롤러를 만드는 작업도 다른 사람들이 미리 만들어놓은 라이브러리를 활용하는 것이 좋다. 아니 필수다. 모든 걸 직접 제작하려는 생각은 (천재가 아니라면) 어리석은 짓이다. 이 책은 기본적으로 BeautifulSoup 라이브러리(bs4)를 사용한다. BeautifulSoup으로 시작해서 스크레이피, 오픈리파인, 자연어 처리 NLTK, 셀레니움, 필로, 테서랙트, CAPTCHA 등 많은 라이브러리의 사용법을 이 책에서 배울 수 있다.

 

파트1의 내용은 웹 크롤러 만들기의 기본을 설명하는데, 웹 크롤러를 만들어서 웹 사이트를 돌아다니며 모은 데이터를 MySQL과 같은 데이터베이스에 저장하는 방법까지 배운다. 책에 있는 내용을 따라하다보면 웹 크롤러가 어떻게 웹을 돌아다니는지 조금 감을 잡을 수 있을 것이다.

 

파트2의 내용은 매우 실용적이다. 무슨 내용을 다루는지는 목차를 보면 된다. 문서 읽기, 지저분한 데이터 정리하기, 자연어 읽고 쓰기, 폼과 로그인 뚫기, 자바스크립트 스크레이핑, API를 통한 크롤링, 이미지 처리와 텍스트 인식, 스크레이핑 함정 피하기, 스크레이퍼로 웹사이트 테스트하기, 병렬 웹 크롤링, 원격 스크레이핑, 웹 스크레이핑의 합법성과 윤리.

 

크롤링에 관심이 있어 '파이썬으로 웹 크롤러 만들기'를 봤는데 파이썬 실력이 늘어난 것 같다. 다양한 라이브러리를 경험을 해서 그런가?! 웹 크롤러에 대한 궁금증도 어느정도 풀렸지만 파이썬의 막강함을 다시 한번 느끼게 되는 계기가 된 것 같아 개인적으로 아주 만족스럽다.

 

20190526_212820.jpg

 

 

 

 

 

 

 

 

이 책은 오라일리 미디어의 Web Scraping With Python 2nd Edition을 한빛미디어에서 한글 번역본인 '파이썬으로 웹 크롤러 만들기 2판'입니다.

 

 

 

웹 크롤링이란? 

크롤링(Crawling)이라고도 하고, 스크레이핑(Scraping)이라고도 부르며 웹페이지를 가져와 페이지 내의 데이터를 추출해내는 것을 일컫는 말로, 이런 작업을 수행하는 프로그램을 크롤러(Crawler)라고 합니다.

 

 

 

책을 읽기 위해 필요한 것

 

파이썬에 대한 기초 지식 

프로그래밍에 대한 기초 지식

 

 

책 이름대로 파이썬을 이용해서 크롤러를 만드는 것이 목적이기 때문에, 책에 있는 모든 소스가 파이썬으로 작성되어 있습니다. 다른 프로그래밍 언어는 알지만, 파이썬을 아예 모르거나, 아직 기초적인 내용밖에 모르는 사람이더라도 책을 읽기에는 무리가 없습니다. 파이썬을 써본 적이 없거나, 멀리하셨던 분들은 이 기회에 파이썬을 익히는 것도 나쁘지 않을 것 같습니다.

 

 

 

책의 구성

 책은 크게 파트 1과 파트 2로 나누어져 있습니다.

 

파트 1

 파트 1에서는 웹 스크레이퍼의 기초, 본질적인 내용들을 위주로 다루며 웹 크롤러 개발을 시작하기 위한 토대를 닦는 과정입니다. BeautifulSoup을 설치해서 사용해보고, HTML 태그에서 단서를 구하는 방법, 정규 표현식 같은 기초 내용을 학습하는 구간입니다.

 

 

파트 2

  파트 2의 내용은 파트 1의 내용을 충실히 학습한 학습자나, 이미 알고 있는 개발자에게 필요한 내용들로 웹상에서 만나는 다양한 데이터 형태와 예외들에 대해서 다루고 있습니다. 상호 작용 기능이나, 폼, 자바스크립트에 의해 크롤링이 방해받을 때, 이를 극복하는 방법에 대해서도 쓰여 있습니다. 사이트에 직접 테스트를 해보고, 자동화하고, 커진 규모에 좀 더 빠르게 작동할 수 있게 최적화를 하고 병렬화를 시도해보는 등 고급 스킬들에 대해서도 다룹니다.

 

 

 

이 책의 장점

 

1. 웹 크롤링에 대해 무지한 사람도 이해하기 쉽게 작성되어 있다.

 웹에서 정보를 가져오고 싶은 사람들이 적절한 파이썬 강의만 학습해도 이 책을 읽고 크롤러를 만드는데 무리가 없어 보입니다. 크롤러를 만드는 것에 초점을 뒀기 때문에 필요 이상의 깊이 있는 내용이 들어 있지 않는 것이 한몫하는 것 같습니다.

 

 

2. 어색함이 느껴지지 않은 준수한 번역

 과거에 비하면 번역에 문제가 있는 책들이 적은 편이긴 해도 여전히 대안이 없는 상태에서 질 낮은 기계 번역을 이용한 책들이 시중에 나와 있는 걸 감안하면, 이 책은 원래 한글로 작성된 수준이라고 볼 수 있습니다. 부자연스러운 문장을 찾아볼 수 없었던 깔끔한 번역판이라 기초 지식만 가지고 있거나, 그마저도 부족한 사람들이 부자연스러운 용어나 표현으로 인해 학습하기 어려운 부분은 없다고 볼 수 있습니다.

 

 

3. 다양한 경우를 만나고, 실용적인 도구를 만들 수 있다.

 웹 크롤링을 하면서 만날 수 있는 다양한 경우들에 대해 책에서 다루고 있습니다. 무작정 데이터를 긁어올 수 있으니 이런 식으로 작성하라고 이야기하는 것이 아니라, '이 방법이 통하지 않는 경우가 있는데 그 이유는 무엇이며, 이러한 방식으로 대처가 가능하다.'라는 설명이 있어 실생활에서 유용하게 쓸 크롤러를 만들 수 있습니다.

 

 

4. 흥미로운 내용

 이 책은 국내에서 저자가 북미에 거주 중인 상황이라, 북미 위주의 내용을 다루어 국내 실정법을 다루는 것은 아니지만, 상용 사이트를 사용하는 과정에서 허가되지 않은 접근이나 허가되었다고 하더라도 그 상용 사이트의 운영에 방해되는 정도의 크롤링 작업이 법적으로 문제의 소지가 있음을 충분히 설명하여 만드는 방법만 중요한 것이 아니라 사용하는 방법도 신경 써야 함을 강조하고 있습니다. 특히 책에서 제시한 페이스북 무단 크롤링 사건 같은 경우 '빅 데이터는 싸지만, 변호사는 비싸다.'라는 개발자의 이야기가 법률적인 문제가 결코 작지 않음을 확 와닿게 해주는 표현이었습니다.

 

 

 

 

 

총평

 

파이썬을 잘 모르더라도 프로그래밍 경험이 있는 사람은 읽는데 문제없는 책

웹 크롤러 입문자부터 웹 크롤러 유경험자가 참고하기 좋은 책

 

파이썬을 이용해 웹 크롤러를 만들어보려는 입문자에게도 좋은 책이지만, 이미 경험이 있는 개발자에게도 옆에 두고 문제를 마주칠 때마다 읽을만한 참고서로 손색이 없을 정도로 많은 사람들에게 이 책이 분명히 유용한 책이 될 것입니다.

 

20190609_033853801_iOS.jpg

 

파이썬을 이용한 웹 크롤러 제작의 필독서

파이썬은 문법에 대한 학습만 하고 djnago를 이용한 간단한 웹 페이지만 작성해본 사람으로서 처음 접해본 웹 크롤러 관련 서적이다. 책은 두껍지 않으나 웹 크롤러과 관련하여 다루는 내용이 많고 설명이 간결하다.

파트1 스크레이퍼 제작

파이썬을 통한 웹 크롤링이 무엇인지 소개하고 파이썬을 설치하고 간단한 코딩으로 부터 시작해서 여러가지 라이브러리를 사용하여 데이터를 얻고 mysql을 설치해서 데이터베이스에 저장 하는 것까지 안내 하고 있다. 파이썬 기초에 대해서는 다루지 않기 때문에 파이썬에 대한 기본적인 이해와 학습은 미리 준비가 필요하다. 하지만 웹 크롤링이 뭔지, 파이썬이 뭔지 몰라도, 소스코드가 무었을 의미 하는지 제대로 이해 하지 못해도 웹 크롤러에 대한 대략적인 감은 잡을 수 있을 듯 하다. 핵심만 간추려서 군더더기 없이 친절하게 안내하고 있어 쉽게 이해 할 수 있다. 하지만 소스코드를 보고 이해 하는 것과 설명만을 이해 하는 것은 전혀 다른 것이니 소스코드를 보고 직접 코딩하면서 결과물을 확인 하면 더 좋을 것이다.

웹 크롤러를 작성하여 데이터를 얻어 오는데 있어 여러가지 준비 사항들이 필요한데 정규표현식과 람다표현식에 대해서도 간단하게 설명하고 넘어가는 부분이 있다. 웹 크롤링으로 정확한 정보를 수집한다고 하면 이들의 내용에 대해서도 따로 학습이 필요 할 듯 하다. 또 수집한 데이터를 데이터베이스에 저장 하여 확인 하기 위해 my-sql 을 설치하여 사용하는 방법을 안내하고 있다. 이렇게 부분 부분 필요한 내용을 어렵지 않게 쉽게 설명하고 있어서 맘에 들었다.

파트2 고급 스크레이핑

책에서 저자가 말했던 "웹 크롤링은 여러가지 최신 웹 기술의 핵심에 있다" 라는 말을 증명 하는 내용이다. 웹 크롤링으로 데이터들을 수집하기 위해 상대해야 하는 여러가지 주제들에 대해 하나하나 설명을 하고 있다. 목차에서도 볼 수 있듯이 텍스트 포멧의 문서읽기, 자연어 처리, 폼과 로그인, 자바스크립트등의 내용을 소개 하는 것을 보고 있자니 내가 너무 웹 크롤링을 그냥 막연하게만 생각하고 있었다는 것을 느꼈다. 하지만 적당한 유머와 간결한 문체로 설명을 해주어서 이렇게 알아야할 내용을 나열해주는데도 부담스럽거나 어렵다고 느껴지는 부분은 없었다.

목차의 내용중에 다음의 부분들이 인상적이었다.

폼과 로그인 뚫기

http post 요청을 형식에 맞게 직접 만들어서 스크레이퍼가 전송을 할수있게 만드는 법을 소개 하고 있다. 웹 크롤렁은 정적인 페이지의 데이터만 수집해오는 줄 알고 있었기에 이 부분은 전혀 생각하지 못했다.

자바스크립트 스크레이핑

자바스크립트를 스크레이핑 하기전에 자바스크립트에 대해 간결하게 설명을 하고 있다. 내용이 많지도 않은데 마치 자바스크립트 안내서의 느낌을 받았다. 그만큼 설명을 잘 하고 있다고 생각한다.

API를 통한 크롤링

웹 크롤러에도 API가 있는 줄은 몰랐다. 수집하고자 하는 사이트와 내용을 잘 정리해서 시행착오를 거치며 쓸만한 데이터를 얻어 내는 것으로만 생각 하고 있었는데. 웹 크롤러 자체도 하나의 프로그램으로 인식하고 접근 방법을 다르게 바라보게 해주는 내용 이었다.

인상적인 문구들

어찌보면 당연한 내용인데도 읽으면서 세삼 각인되었던 문구들이다.

"분석과 설계를 통해 코드 작업에 들어가야지 그렇지 않은 경우에는 코드를 작성하고 유지하는게 어려워 지고 결과 데이터를 추출하고 효율적으로 사용하기도 어려워진다"

"웹 크롤링은 여러가지 최신 웹 기술의 핵심에 있다"

 

"텍스트 분석은 당신의 프로젝트와는 아무 상관없다고 생각할 수도 있지만, 텍스트 분석의 배경에 있는 개념을 이해하면 머신러닝 전반에 걸쳐 대단히 큰 도움이 되며, 현실 세계의 문제를 개연성과 알고리즘의 관점에서 모델링하는 더 범용적인 능력을 갖게 됩니다."

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

이 책의 초판도 인상적으로 읽었는데, 2판이 나와서 다시 읽어보게 되었다. 기존 초판에서 4, 5, 16장이 추가되었다고 한다.

프로그래밍 책을 읽을 때 가장 먼저 하는 일은 github 저장소가 있는지 찾는다. 이 책의 저자도 github 페이지에 책의 소스코드를 공개하고 있고 주피터 노트북을 통해 바로 실습할 수 있도록 .ipynb 확장자로 파일을 제공하고 있다. 또, 초판에서는 소스코드를 .py 형태로 제공했는데 2판이 나오며 .ipynb 형태로 제공하고 있기 때문에 주피터노트북과 google colabortory를 통해 코드를 바로 실행해 볼 수있게 되었다.

https://github.com/REMitchell/python-scraping

소스코드를 열어볼 때는 로컬장비에 클론을 받아 주피터노트북으로 열어보는 방법도 있지만, 아래의 링크처럼 바로 Colaboratory로 열어 소스코드를 실행해 볼 수 있다.https://colab.research.google.com/github/REMitchell/python-scraping/

위에 있는 colab URL을 실행하면 바로 소스코드를 실행해 볼 수 있다. 또, 개발서적을 볼 때 텍스트 보다 소스코드를 먼저보고 이 소스코드가 뭘 의미할지 먼저 고민해 보고 텍스트를 보는데 이렇게 프로그래밍 관련 책을 읽을 때는 소스코드를 먼저 실행해 보면 텍스트를 봤을 때 더 도움이 되는 것 같다.

크롤링을 할 때 보통 유명사이트를 크롤링하는 예제로 만들어질 때가 많은데 이 책은 크롤링을 위해 사이트를 임의로 만들었다. 이렇게 별도의 사이트를 만드는데는 실습하고자 하는 의도를 잘 표현할 수 있다는 점과 사이트의 레이아웃이 변경되거나 했을 때 책의 소스코드가 돌아가지 않는 점을 방지할 수 있을거 같다. 크롤링을 위한 사이트를 만들어 놓았기 때문에 사이트의 내용이 변경되어 책의 소스코드를 사용할 수 없게 되는 일을 방지할 수 있다는 점이 좋았다.

또, 이렇게 실습 사이트를 만들었을 때 실습용으로 만든 사이트이기 때문에 서비스에 부담을 주지 않는 것도 장점일 것 같다. 사이트를 크롤링하면 트래픽이 몰릴 수 밖에 없기 때문에 서비스에 부담을 주게 되는데 실습용으로 제작된 사이트에서 여러 배려를 느낄 수 있었다.

웹 크롤링 혹은 스크래핑은 책에서 얘기하는 것 처럼 프로그래밍을 전문적으로 다루는 사람이든 아니든 누구든 흥미로워 하는 분야 중에 하나인것 같다. 또, 웹 크롤링을 위해서는 웹에 대한 전반적인 지식을 필요로 한다. 그래서 크롤링으로 프로그래밍을 배우게 된다면 웹에 대한 전반적인 내용을 배울 수 있는 주제라는 생각이 든다.

그래서 웹 스크래핑을 이해하기 위해서는 프로그래밍 기초지식도 필요하지만 html 이라든지 css, 자바스크립트 등에 대한 이해도 필요로 한다.

다양한 형식으로 저장하기

데이터를 수집해서 어떻게 저장해서 처리해야 하는지도 중요한데, 이 책은 csv형태의 파일로 저장하는 코드 뿐만 아니라 데이터베이스를 활용해서 저장하는 방법까지 다루고 있다.

텍스트 마이닝 기법(ngram, 마르코프 모델)

이 책에서 가장 인상적이었던 부분은 텍스트데이터를 전처리 하고 다루는 방법에 대한 내용이다. 크롤링과는 조금 거리가 있는 내용일 수도 있지만 수집한 비정형 데이터를 분석하기 위해서는 텍스트 마이닝 기술을 가지고 있으면 좀 더 다양한 분석을 해볼 수 있다. 또, 웹상에서 수집한 데이터는 텍스트 데이터가 많은데 아무리 수집을 많이 한다고 해도 의미를 찾을 수 없다면 무용한 일이 될 수도 있을 것이다. 초판에서도 이 책에서 인상적이었던 부분은 이런 텍스트마이닝 기법이었다. 게다가 머신러닝이나 딥러닝에서 활용되고 있는 마르코프 모델에 대한 내용까지 다루고 있다.

이미지 처리와 텍스트 인식

웹 상에서 가져온 이미지에 있는 텍스트를 다룰 수 있도록 OCR 라이브러리도 다루고 있다. 그리고 수집된 이미지를 학습해서 이미지의 문자를 인식할 수 있는 머신러닝 기술에 대한 설명도 함께 하고 있다.

테스트

웹사이트를 주기적으로 크롤링하다보면 어느 날 사이트가 변경이 되어 작성했던 크롤링 스크립트가 동작하지 않는 경험을 하기도 한다. 또 테스트코드를 작성하는 것은 좋은 습관 중에 하나이기도 하다. 이 책은 이런 코드들을 모두 주피터 노트북에서 실행할 수 있는 소스코드로 제공하고 있다.

저작권

크롤링을 통해 데이터를 수집할 때 가끔 저작권을 간과해서 이슈가 되는 사례를 종종 봐왔다. 크롤링을 하기 전에 수집을 해도 되는 데이터인지 저작권에는 문제가 없는지 합법성과 윤리에 대해서도 구체적인 사례를 통해 설명하고 있다.

초판의 내용도 좋았기 때문에 어떤 내용이 추가되었을 지 궁금했는데 크롤링을 하면 대량의 페이지를 가져올 때 좀 더 빠르게 혹은 효율적으로 작업하기 위한 병렬처리 내용이 추가된 것도 인상적이다.

책의 소스코드도 잘 정리되어 있어서 실습과 함께 볼 수 있는 점이 좋았다.

한빛미디어에서 '상품 협찬'을 받아 후기를 작성하였습니다.

 

[책 표지]

20190607_174357.jpg

책 표지에 나오는 동물이 무엇인지 매우 궁금했었다. 책을 다 읽고 표지 다음장을 넘기면서 그 궁금증을 해소할 수 있었다.
표지의 주인공은 '사바나천산갑'이라는 포유류 동물이라고 한다. 멸종 위기에 처해 있다고 한다.
국내 서적에서는 찾아보기 힘든 독특한 표지 디자인이다.

 

1. 이 책을 읽기전에
오래전부터 난 '웹 스크랩'이 아니라 '파싱'이라는 용어에 더 익숙했다.
수년전 내가 활동하는 IT카페에서도 '파싱'에 관한 질문이 간혹 올라오는게 전부였다.

요즘은 분위기는 반전되어 광범위하게 활용되고 있는 것 같다.
정보처리 신기술은 대체로 그 기술과 분위기가 무르익을 때까지 다소 시일이 걸리는 듯 하다.
수년전만 해도 웹사이트에서 내가 원하는 데이터를 쉽게 가져온다는 것은
 '신기하네. 이런 방법도 사용하는구나'
그러나 딱 거기까지였다. 나는 더이상 목적이나 바라는 무엇을 찾지 못했고 중단됐었다.
 
2.파이썬에 대한 나의 선수 지식은?
나는 파이썬으로 프로젝트를 진행해 본적이 없다. 
닷넷 계열 언어로만  쭈욱 프로젝트를 진행해 왔기 때문이다.
이웃 회사에서 파이썬으로 프로젝트를 해 달라는 요청이 있었지만 다른 선행 프로젝트로 인해 진행하지 못했다.
그리고 파이썬은 내 기억속에서 사라졌다.
파이썬이 아닌 다른 언어로 몇번 시험 코드를 만들어 돌려 보곤 한게 전부였다.
그리고 "Web Scraping with Python"이라는 책에 내 수중에 들어왔다.
 
3. 책을 읽으려면 파이썬 문법을 몰라도 될까?
몰라도 되고 알면 더 좋다.
이 말은 파이썬이라는 언어에 대해서 어느정도 알고 있으면 더 재미있을 것이라 생각된다.
  하지만 파이썬을 몰라도 책에 나와 있는 예제를 입력하고 실행보면서 문법을 익혀도 크게 문제가 없을 것 같다.
책에 나오는 예제 하나 하나는 쓸모없는 예제는 단 하나도 없다. 전부 유용하고 실무에 바로 적용 가능한 수준으로 고급스럽다.
나는 이 책을 더 재미있게 보기 위해서 아니 파이썬이라는 언어의 매력을 보게 해주었기에 파이썬에 푹 빠지게 만들었다.
 
4.예제 코드를 실행해 보면서
책 도입부에 "BeautifulSoup"라는 용어가 등장한다.
생전 처음 접해보는 용어다.
파이썬에서 사용하는 웹 탐색용 라이브러리라고 정의되어 있다.
파이썬이라는 언어의 간결함과 엄청나게 많은 라이브러리에 한번 더 놀라고 있다.
파이썬을 가벼이 볼 게 아니구나. 새삼 깨닫고 있다.
import sqlite3
conn = sqlite3.connect('testdb.sqlite')
단 두줄의 코드로 SQLite에 연결하고 있다. 정말 놀랍다.

그래서 난 여러 파이썬 책을 도서관에서 대출해서 이 책과 같이 보았다. 소장하고픈 책도 한권 주문했다.
책장을 한장 두장 넘기면서 그 다음은 무엇이 나올까? 어떤 이야기를 할까?
정말 흥미 진진하다. IT기술서적은 대부분 딱딱하고 재미없다.
그러나 이 책은 처음부터 끝까지 재미있다. 꼭 한번 보시는 걸 추천드린다.
 
2017년도인지 정확히 기억이 안난다. 언제 구입한지는 몰라도 책장을 둘러보니 파이썬 책이 하나 있었다.
보물을 찾은 듯한 기분이랄까 왠지 새롭다.
 
5. 무수히 많은 데이터를 어떻게 정리해야 할지 새로운 아이디어를 떠오르게 해주었다.
무수히 많은 정보가 웹사이트에 공개되어 있고 독자를 기다리고 있지만 막상 내가 필요로하는 유용한 정보를 검색하고 저장하고 내 것으로 만들기란 쉽지 않다.
그리고 한가지 중요한게 더 있다. 저작자의 권리 침해없이 다른 사람에게 불편함이 없도록 합법적으로 정보를 내 데이터베이스에 저장하는 것이다.
친절하게도 이 책에서는 스크랩한 정보를 데이터베이스로 저장하는 방법도 알려 주고 있다.
MySQL 설치부터 파이썬에서 사용하는 방법도 안내해 준다.
나는 기 설치된 MariaDB가 있어 별도로 MySQL을 설치하지 않았다. 서로 비슷한 DB이기에 그대로 사용할 수 있었다.
 
6. 마무리 하면서
 저자의 지식의 깊이가 남다르다. 다른 사람은 어떨지 모르지만 내 생각은 그렇다.
여러 저자의 책을 경험했기에 '라이언 미첼'의 지식 깊이는 조금은 남다른 것 같다.
풍부한 경험에서 우러나오는 지식의 깊이를 가늠해 볼 수 있었다.
 
나는 이 책을 통해 정보(데이터)에 대한 새로운 시각을 가지게 되었고 새로운 뭔가를 준비하고 있다.
저자와 한빛미디어에 감사의 인사를 드리며 리뷰를 마무리 하고자 한다.

 

이 책은 웹 스크레이핑을 구현하는데 필요한 지식들 즉 데이터베이스, 웹 서버, HTTP, HTML, 보안, 이미지처리 등 관련 도구 등에 걸쳐 크롤러를 개발하는 과정을 자세하게 다루고 있다. 파이썬 언어를 이용해서 웹 크롤러를 직접 만들어 보고 싶은 사람이라면 많은 도움이 될만한 책이다. 파이썬 문법을 몰라도 프로그래밍 지식이 있다면 충분히 읽을 수 있다

돼지돼지돼지ㅙ지돼지돼좨디ㅗ개;먇ㄴㅇㄹ

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

 

파이썬으로 웹 크롤러 만들기

파이썬으로 웹 크롤러 만들기

라이언 미첼 저/한선용 역

웹 어디서든 내가 원하는 데이터를 쏙쏙쏙웹에 존재한다면 그것이 어떤 형태이든 데이터로 추출할 수 있다. 필요한 무기는 이 책과 파이썬뿐. BeautifulSoup, 셀레니움, 테서랙트 등 강력한 파이썬 라이브러리 사용법과 함께 API, 인증, 이미지 및 텍스트 인식, 로그인 처리 등 웹 크롤링의 기초부터 고급 기법까지 종합적...


프로그래밍을 배웠다면 이제 배운 프로그래밍을 어디에 사용할까? 머신러닝, 인공지능? 아마 많은 경우 귀찮은 작업을 수행하기 위해 일반적인 사람들이 배우는 경우가 많다. 그렇다면 이렇게 귀찮은 작업을 한 번에 할 수 있는 방법은 다양하다. 인터넷의 웹에 있는 자료를 가져오는 것 바로 웹 스크래핑이다. 프로그래머와 일반인들 사이에 가장 재미있고 가장 흥미로운 주제가 바로 웹 스크래핑이다. 일반적인 사람이라면 누구나 인터넷을 이용하고 인터넷에서 자료를 찾기 때문이다. 


이론적으로 웹 스크래핑이나 데이터를 수집하는 작업을 웹 크롤링이라 하고 이러한 프로그래밍을 웹 크롤러라고 한다. 대표적으로 파이썬을 이용해 이러한 웹 크롤러를 많이 작성하고 있다. 이 책은 이렇게 파이썬을 이용해 웹 크롤러를 만드는 방법을 상세히 설명하고 있다. 오늘날 웹에 존재하는 거의 모든 종류의 데이터를 수집, 변형, 사용할 수 있는 상세한 가이드로 이 책이 제공하고 있다. 1부에서는 웹 스프래핑과 웹 크롤링에 대해 깊이 설명하고 책고 실습에서 사용할 라이브러리에 중점을 준다. 2부에서는 독자가 웹 스크패링을 만들 때 유용한 추가적인 주제에 대해 다룬다.


1부에서부터 BeautifulSoup이라는 크롤링에 필수적인 라이브러리를 설치하고 간단하게 이용해본다. 위 사진과 같이 Crwaler 클래스의 코드를 살펴볼 수 있다. 실제 파이썬 관련 코드는 모두 오픈되어 있으니 github와 같은 사이트 및 공식웹에서 모두 확인할 수 있다. 실제 구문을 보면 그렇게 복잡하지 않다. 사이트 주소를 입력해 파싱하는 것이다. 즉 원하는 형태로 쪼갤 수 있게 하는 것이다.


웹 언어 외에도 CSV, TXT파일 등 많은 형태의 자료를 파싱하고 분석할 수 있지만, 대부분의 인터넷의 자료를 가져오는 경우가 많기 때문에 HTML 분석을 많이한다. 실제 HTML은 마크업 언어로 다양한 태그가 계층적으로 이뤄져있다. 따라서 HTML언어의 크롤링의 핵심은 바로 이 태그를 분석하는 것이다. 많은 경우 태그의 이름을 이용해 해당 태크가 있는 문장을 검색해 이를 출력하거나 저장하거나 이용할 수 있다. 


이 책은 그 외에도 다양한 크롤링 방법을 제공한다. 자연어를 읽고 이를 분석하는 방법은 NLTK라는 자연어 툴킷을 사용한다. 다양한 API를 통해 받아온 데이터를 분석하는 방법도 알아본다. 실제 이렇게 웹의 데이터를 파싱하고 분석하는 일련의 과정들이 단순히 자료를 만들고 업무 자동화에만 사용된다면 큰 오산이다. 실제로 이는 알고리즘 관점에서 좀 더 확장된다면 머신러닝과 딥러닝의 전반적인 작업이 될 수 있다. 따라서 이후 파이썬으로 인공지능을 배우고자 하면 먼저 파싱과 분석에 대해 이 책을 통해 먼저 익히길 추천한다.


파이썬의 기본적인 이해가 끝났다면 이렇게 다양한 프로젝트와 여러 라이브러리를 이용하는 예제를 익히고 실제로 사용해도 큰 문제가 없을 정도의 코드 및 프로그램을 작성하고 알아보는 과정을 거쳐보자.

 

KakaoTalk_20190524_053911149.jpg

 

웹프로그래머라면 프로그래밍을 하며 한번쯤 크롤링에 대한 욕구가 생기는것을 부정할 수 없을것이다 

 

그만큼 종종 쓰이는 분야이며 웹을 크롤링 하는데 있어 핵심은 '재귀'이기 때문에 URL에서 페이지를 가져오고, 그 페이지를 검사해 다른 URL을 

 

찾고, 다시 그 페이지를 가져오는 작업을 무한히 반복하여서 자칫 잘못하면 서버에 부하가 올 수 있다.

 

따라서 제대로 알 지 못하고 크롤링만 주구장창 한다면 오히려 독이 될 수 있기 때문에, 제대로 알아야 할 필요성을 느끼는 도중에 

 

한빛출판사의 리뷰어로 선정되어 이 책으로 크롤러를 공부하게 되었다. 

 

특히 언어가 파이썬으로 되어 있어 다른 언어들보다 초보자들이 웹 크롤링에 대해 쉽게 접근 가능하며, HTML, 이미지, 텍스트, 폼 등등 여러 정보들을 

 

얻는 방법들을 상세히 알려주어 크롤링에 대한 나의 시선이 좀 더 넓어진 느낌이 있다. 

 

다만 파이썬으로 배우다 보니 다른 언어와 파이썬 사용시 크롤링에 있어 장단점을 비교해서 알 수 있었으면 더 좋았을거 같다는 아쉬움이 조금 있다.

 

웹 크롤링에 대해 쉽게 접근하면서도 다양한 분야에 대해 적용해 보고 싶은 분들에게 이 책을 권한다.

"개발자를 위한 파이썬(한빛미디어)"을 읽으면서 웹 크롤러(chapter9. 크롤링 웹 어플리케이션 만들기)을 학습 하였는데 이번 기회에  "파이썬으로 웹 크롤러 만들기"라는 웹 크롤링만 집중해서 쓰여진 책을 읽게 되었다. 

 

 

우선 이 책 "파이썬으로 웹 크롤러 만들기" 는 웹 크롤러를 한다고 가정하면 "꼭 읽어봐야 하는 책" 이라고 생각한다.

 

언어에 상관없이 무조건 한번을 읽어보면 웹 크롤러를 쉽게 그리고 어떻게 해야 하는지 알수 있는 책이라고 생각한다. 

 

우선 자바를 주력으로 개발하는 입장에서 웹 크롤러를 자바로 하기는 했지만 "파이썬으로 웹 크롤러 만들기" 라는 책을 읽으면서

파이썬 언어의 강력함과 그리고 웹 크롤러를 진행 하였을때 생각했던 어려움(로그인 문제, 문서 읽기, 자브스크립트 스트레이핑)등 그리고  이슈사항(여러 웹을 크롤링 할때 모듈을 분리하는 방법 등등)들이 거의 모든것이 "파이썬으로 웹 크롤러 만들기" 에서 이야기하고 설명하고 있었다. 

저자의 식견이나 그리고 설명이 너무나 자세해서 놀랄정도로 좋은 내용이었었던 같다. 

 

 

이 책의 주요 장점이라면 

 

1. 하나의 예제를 다양한 방법으로 차례차례 설명 하고 있고 현업에서 요구하는 사항 및 변경 사항 등을 제시하고 프로그램을 업그레이드하면서 실행 및 개선을 진행하면서 학습을 할 수 있게 쓰여있었다. 

(유지관리가 쉬운 웹 크롤러를 구축하는데 필요한 테크닉과 패턴을 제시하고 있음)

 

 

2. 데이터 저장 방식에 대한 기재 (CSV, MYSQL) : 다른 책에는 언급하지 않은 내용

 

 

3. 고급 스크레이핑 12개

- 문서읽기 => csv, pdf, 마이크로소프트 워드문서 

- 지저문한 문서 정리하는 방법 -> 정규화 , 활용할수 있는 오픈소스 등

- 폼과 로그인 뚫기 -> 로그인을 ˚고 정보 얻기

- 자바스크립트 스트레이핑 

- API를 통한 크롤링 (API요청, 응답, JSON 파싱)

- 이미지 처리와 텍스트 인식(웹사이트 이미지에서 텍스트 스크레이핑하기)

 

 

4. 고급 스크레이핑 중 18장. 웹 스크레이핑의 합법성과 윤리 : 저작권과 법률에 대한 고민을 해볼 수 있는 내용 

 

웹 크롤러를 하면서 고민했던 여러가지 문제 (로그인 문제, 법적인 문제)등에 대해서 설명을 하고 있었고 해당 사항등은 업무에서도 활용 및 도움이 되는 주제였다. 

 

 

단점 

실습을 하면서 파이썬 버전 및 프로그램 설치시 오류

: 해당문제는 "파이썬으로 웹 크롤러 만들기" 책의 문제가 아닌 파이썬을 설치하면서 언제나 고생하는 문제인데 버전 및 설치 환경이 바뀌니 계속 확인하면서 수정하는 방법 밖에는 없을 것 같다. 

 

 

마지막으로 OREILLY 책이 어렵다고 생각했는데 이 책은 정보, 난이도, 현업에 적용하기 위해서도 최고라고 생각한다. 

 

 

꼭 읽어보기를 추천 해본다. 

파이썬 웹 크롤러 만들기 

작년 파이콘에서 웹 크롤러를 보고 나도 하나 만들어야겠다 싶었다. 

인터넷을 뒤적여 가며 찰흙을 붙이듯 붙여나갔지만 얼마 가지 않아 난관에 봉착했다. 

태그의 열림과 닫힘이 짝이 안 맞거나 한글이 아니거나 혹은 렌더링 된 페이지이거나 혹은 로그인이 필수인 페이 지거나.. 

나는 결국 매번 부딪히는 허들에 방법을 찾아 헤매고 헤매다 지쳐 결국 토이 프로젝트는 중단되었다. 


인터넷에는 많은 자료가 있어 방대하지만 그것은 과연 지식이라 할 수 있을까 

또한 방법은 찾았다 하더라도 근본적인 오류의 원인과 해결 방법을 설명할 수 있는 수준에 이르긴 어려웠다. 

그래서 나는 요즘 기술 공부도 책으로 먼저 하는 것에 중점을 두고 있다. 

이런 기회에 만난 파이썬 웹 크롤러 만들기 책은 삽질의 연속이었던 나에게 

라이브러리 하나하나, 함수 인자 하나하나, 가장 많이 사용하는 use case 하나하나 친절하게 설명해주는 책이다. 


이전에 검색으로 얻은 파편화된 지식이 파이썬 웹 크롤러 만들기를 읽음으로써 조각이 맞춰지는 기분이었다. 

고급 HTML 분석부터 크롤링 시작, 웹 크롤링 모델, 스크레이퍼, 데이터 저장을 초반에 다루고 있는데 이곳까지 읽으면 원하는 웹 크롤러는 만들 수 있다. 

이후 자연어 처리, 로그인 뚫기, 이미지 처리, 텍스트 인식 등 딥러닝을 위한 자료 수집에 도움이 될만한 챕터들도 있고, 

병렬 웹 크롤링과 그리고 가장 궁금한 토픽인 합법성과 윤리에 대한 내용도 다룬다. 


미리 말해두자면 크롤링은 적법이다. 

다만 일부 사이트에서는 리소스를 민감하게 받아들여 해당 ip 차단을 하기도 한다. 

개인적인 생각으론 무분별한 크롤링보다는 사이트에 부담스러운 request를 주지 않도록 적절히 조절하는 것이 좋다고 생각한다. 


이 책은 파이썬 3 기반으로 작성돼있다. 

파이썬 기초 지식이 없는 사람들도 따라 할 수 있는 수준으로 가이드 하지만 

그렇다고 이 책을 파이썬 교재로 삼아서는 안된다고 강조한다. 


파이썬으로 웹 크롤러 만들기 책은 스스로 링크를 타고 움직이면서 정보를 수집하는 웹 크롤러를 주제로 삼는다. 

그저 크롤러를 만들고 HTML 구조를 분석하는 책이겠거니 생각했으나, 책을 쭉 읽어보니 생각보다 훨씬 다양한 분야를 다루고 있어 몹시 흥미로웠다고 옮긴이는 말한다. 


또한 파이썬 공부를 병행하고자 하는 독자라면 python3을 추천한다. 

이 책이라서가 아니라 이제 파이썬은 버전 2를 더 이상 지원하지 않는다. 

유지보수를 위해서 불가피하게 배워야 할 하는 경우가 아니라면 버전 3을 먼저 익힌 뒤 

여유가 된다면 버전 2를 보는 순서가 되길 바란다. 

왜냐하면 둘의 문법은 생각보다 많이 다르기 때문이다. 


보통 자료 조사에서 크롬 탭 4~50개가 기본인 나는 이참에 웹 크롤러를 만들어 링크를 타고 타고 움직이는 자료 수집 비서를 만들어볼 생각이다.

B5046562423_l.jpg

 

리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.

 

파이썬이라는 언어는, 프로그래밍을 한다고 하면 항상 C 언어를 배워야했던 것처럼, 반드시 익혀야하는 언어라고 생각이 될 정도로 일반화되었다고 생각한다. 단순히 사용하기 쉽다 정도에서 끝나지 않고, 어떤 일을 빠른 시간 내에 해야 할 때, 이미 필요한 대부분의 라이브러리가 준비되어 있는 경우가 많다. 웹 관련 기술에서도 이러한 점은 다르지 않다.

 

초판이 정확이 언제 출간되었는지 기억이 나지는 않는데, 벌써 두 번째 버전의 번역판이 출간되었음을 다른 책을 구매하러 한빛 미디어 사이트에 들어갔다가 알게 되었다. 마침 기회가 되어 리뷰까지 할 수 있어 감사하게 생각한다.  

 

웹 크롤러를 만들어 특정 사이트에서 원하는 정보를 얻어 오는 것은, 어떤 정보를 어느정도로 수집할 것인가에 따라 난이도는 많이 달라진다. 간단한 정보라 해도, 정보를 수집하게 어렵게 만들기 위한 여러 기법이 적용되어 있는 사이트의 경우, 이를 위해 많은 정보를 찾아보아야 하고, 어떤 언어를 이용하는 것이 가장 도움이 되는 지에 대해서도 고민해야 하는 부분이 된다.

 

본 책은, 그러한 고민을 시작하거나 이미 하고 계신 분들에게, 도움이 될 수 있다고 생각한다. 책의 두께만 보고 별 내용이 없으리라 판단할 수도 있지만, 모든 챕터를 꼼꼼히 읽어보면, 단순히 웹 크롤링러 작성하는 방법만을 나열한 책이 아니라는 것은 쉽게 파악할 수 있다. 간단한 스크레이퍼를 작성하는 방식으로 접근을 하면서 하나 하나 좀 더 복잡한 경우 그리고 좀 더 다양한 고려를 해야만 하는 경우들을 짚고 있다. 그리고 중간 중간에 뒤에 진행되어야 할 부분에 대한 필요한 정보에 대해서도 몇 개의 챕터를 할애해 설명을 하고 있다. 간단한 테크닉이나 단순 라이브러리의 사용법 이외에도, 쿠키 처리, CAPTCHA 다루는 방법, 스크레이핑 방어 코드 우회 등과 같이 좀 더 고급 내용도 다루고 있어 참고하기에 좋은 부분이라 생각한다. 그리고 웹 크롤러 작성시 반드시 고려해야하는 윤리성, 합법성 관련 문제에 대해서도 다루고 있다. 전반적으로 웹 크롤러 작성 시 큰 그림을 보기 위해서 읽어볼 만한 좋은 책이라 생각한다. 

 

하지만, 책을 읽으면서 아쉬운 부분도 일부 눈에 띄었다. 첫째로 이 책이 원서라는 점이다. 원서이기 때문에 이 책이 간행된 시점과 번역서가 간행된 시점은 차이가 날 수 밖에 없다. 예제로 설명하는 코드가 번역이 진행된 시점에 동작하지 않는 부분들이 존재한다. 하지만 역자 분이 이 부분을 꼼꼼히 체크하여, 이러한 부분들을 일일이 언급하고 필요시 예제 코드를 변경하거나, 별도의 github 사이트에 대체 코드를 올려주신 부분은 고마운 부분이라 생각된다. 둘째로 일부 내용의 경우, 배치를 굳이 이렇게 해야했나 하는 부분도 눈에 띈다. 굳이 CVS, PDF와 같은 포맷의 문서 읽기나 자연어 처리와 같이, 알면 도움이 되지만 흐름상 배치를 참고 자료로서 뒷쪽에 배치해도 될 것으로 보이는 내용들을, 중간에 배치 해, 그냥 스킵하고 다음으로 넘어가도 되는 내용 아닐까 하는 부분도 있었다. 셋째로, 다양한 주제를 적은 페이지의 책에서 설명하려다보니, 예제가 단순한 면이 있다. 규모가 좀 큰 예제와 그런 경우 고려해야하는 부분들이 있으면 좋았을텐데 하는 아쉬움이 있다.

 

요즘 들어 번역서들은 과거의 수준과는 달리 상당히 번역이 잘 되어 있다. 이 책 역시 책을 읽으면서 큰 어색함을 느끼지 못하였다. 또 띄어 쓰기나 쉼표 등이 잘 되어 있어서 어색함과는 별개로 빠르게 읽어나가는데도 문제가 없다고 느꼈다 ( 이 부분에 있어서는 사람들마다 생각이 다를 수는 있으나, 아무리 컴퓨터 IT 책이라도, 중요하다고 생각하는 편이다).

 

참고로 이 책은 웹 크롤링에 대한 입문서이지, 파이썬 언어에 대한 입문서는 아니다. 책에서 저자가 책에서 설명하는 라이브러리 설치 방법 등에 대해 상세하게 설명하는 부분이 있지만, 어느정도 파이썬에 익숙해져 있는 분들을 위한 내용이다. 따라서 본 책을 보기 전에 먼저 파이썬 입문서를 참고한 후 읽는 것이 더 효과적으로 책을 이해할 수 있을 것이라 생각한다.

초판은 2016년에 나왔고, 2019년 3월 29일에 2판이 발행되었다. 

2판은 초판의 내용에 웹 크롤링 모델(4장), 스크레이피(5장), 병렬 웹 크롤링(16장)이 추가되었다. 

 

기본적인 파이썬 문법만 조금 알고 있다고 한다면, 이 책을 보기에는 큰 무리가 없을 듯 하다. 

솔직히 웹 스크레이핑이 뭔지, 웹 크롤링이 뭔지, 어디에 쓰는 건지, 어떻게 쓰는건지 전혀 몰랐는데, 

번역이 잘되어 있고, 쉽게 풀이되어 있고, 적절한 코드에, 비유도 적절하게 들어가면서 내용들을 쉽게 이해할 수 있었다.  

 

이 책은 1부 스크레이퍼 제작과 2부 고급 스크레이핑으로 나뉘어져 있고, 총 18장으로 구성되어 있다. 

1부에서는 웹 스크레이핑과 웹 크롤링에 대해서 설명하고 있고, 사용할 라이브러리에 중점을 두고 있다. 

2부에서는 웹 스크레이퍼를 만들 때 유용한 고급 기술에 대하여 이야기하고 있다. 

그리고 다른 사람들의 컨텐츠를 스크레이핑해서 그 내용을 그대로 블로그에 올리는 것은 저작권법에 문제가 되는데, 

18장에서 다양한 관점으로 웹 스크레이핑의 법/윤리 문제에 접근하여 이야기하고 있다. 

 

각 장에서 웹 스크레이핑 관련 라이브러리를 소개하고, 그 라이브러리를 어떻게 설치하는지에 대해서도 자세히 설명되고 있다. 

 

1장/2장에서는 HTML 페이지에서 원하는 데이터를 추출하고, 분석하기 위해 BeautifulSoup 라이브러리를 다루고 있다. 

3장/4장에서는 URL에서 페이지를 가져오고, 그 페이지 안의 또 다른 URL을 통해 페이지를 가져오는 웹 크롤러의 필요한 기술을 다루고 있다. 

5장에서는 그 웹 크롤러 개발에 프레임워크 중 하나인 스크레이피(scrapy)를 소개하고 있다. 

6장에서는 스크랩한 정보를 저장하는 방법에 대해 설명하고 있다. 

 

2부에서는 어떤 형식이든, 어떤 타입의 데이터라도 가져올 수 있는 방법을 알려준다. 

실전으로 테스트해 볼 수 있도록 다양한 예제들이 있어서, 책을 통해 이것 저것 경험해 볼 수 있다. 

 

한마디로 이 책은 파이썬을 사용하는 사람들에게 웹 페이지의 원하는 데이터를 추출할 수 있도록 도와주는 책이라고 할 수 있다. 

초판이 나온지 벌써 몇 년이 흐른 것 같은데, 한빛미디어의 웹 크롤러 도서가 2판이 나왔다.

하지만, 이 책을 읽기 위해서는 기본적인 파이썬 지식이 필요하다는 것이 함정이지 'ㅅ') 후후.

 

 

크롤러를 만들면 뭘 할 수 있을까.

예를 들어, 페이지 내의 모든 링크 목록 중 관심 있는 링크 항목만을 정규표현식을 활용하여 골라내어 수집한다던가, 또는 사이트 전체를 이동하는 크롤러를 만들어 내부 링크를 모두 수집하고 그 페이지들을 사이트의 구조와 동일하게 정리할 수 있다던가, 특정 주제만을 크롤링하여 자신만의 서비스를 만들 수 있다던가 하는 여러 활용 방법이 존재하는 것이다. 'ㅅ')

 

 

책 초반부에서는 BeautifulSoup 라이브러리를 통해 간단한 스크레이퍼를 제작하는 과정을 다루고 있으며, BeautifulSoup 의 find(), findAll() 메소드를 통해 정보에 접근하는 방법을 간단한 정규표현식 안내와 함께 쉽게 설명하고 있다. // 이것은 마치 javascript 의 jQuery나 DOM API를 통해 html node 를 찾는 형태와 비슷하여 습득하기도 쉬워 보인다. 'ㅅ')

 

 

챕터 4 에서는 '웹 크롤링 모델' 이라는 제목으로 데이터 수집시의 이슈와 전략, 체크해야 할 들에 대한 고민할 거리를 안내하면서, 웹 크롤러의 기본적인 구조 설계 패턴 몇 가지를 제시하고 있다. 이 챕터가 아마도 크롤러 초심자에게 많은 도움이 될 것이라 생각한다. // 저.. 저도 초심자.. 'ㅅ');

 

 

개인적으로는 챕터 9 '자연어 읽고 쓰기' 가 두고두고 볼만한 주제로 보이고, 웹개발자들에게는 챕터 10 '폼과 로그인 뚫기' 가 한번쯤 살펴봐야 하는 내용일 것이다.

 

책의 후반부에는 병렬 웹 크롤링, 원격 스크레이핑 등의 고급 주제들과 스크레이핑 자체의 법적/윤리적 이슈들에 대해서 다루고 있는데, 크롤러 전반 이슈에 대해 다루고 있는 국내 발매된 책 중에서는 단연 구성이 좋은 책이 아닌가 하는 생각이다. 'ㅅ')a 긁적. 아님 말구.

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스(GitHub) 2021-07-12 다운로드
DOWNLOAD 예제소스 2021-07-12 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
파이썬으로 웹 크롤러 만들기(2판) : 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
파이썬으로 웹 크롤러 만들기(2판) : 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
파이썬으로 웹 크롤러 만들기(2판) : 초간단 나만의 웹 크롤러로 원하는 데이터를 가져오는 방법
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

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

자료실

최근 본 책0