파이썬을 활용한 크롤러 개발과 스크레이핑 입문

크롤러 설계와 개발부터 수집 데이터 분석과 운용까지

웹 데이터 수집과 분석을 자동으로 처리해 보자!

인공지능, 머신러닝 기술의 발달과 더불어 최근 데이터 분석의 수요가 많아지고 있습니다. 데이터를 유의미한 자료로 활용하기 위해서는 다양한 데이터를 수집하는 ‘크롤링’과 수집한 데이터를 분석하는 ‘스크레이핑’ 기술이 필요합니다.

이 책은 데이터 수집과 분석 등의 업무를 맡은 프로그래머와 크롤러 개발을 맡은 엔지니어를 대상으로 크롤러 개발 방법부터 실제 크롤링과 스크레이핑하는 방법에 대해 상세하게 설명하는 입문서입니다.

이 책에서는 데이터 분석을 수행하는 현업에서 많이 사용되는 파이썬을 사용하여 크롤링, 스크레이핑의 기본과 다양한 응용 방법을 알려주고, 이를 운용할 때 직면할 수 있는 상황들에 대해 설명합니다. 나아가 실습 예제로 블로그 데이터 수집, 미세먼지 정보 수집 등을 다룹니다.

 

도서 상세 이미지

카토 카츠야

주식회사 Gunsy 소속, 대학교 졸업 후 들어간 모 가전 업체에서 카메라 등에 들어가는 소프트웨어를 개발하면서, 개인적으로 iPhone/Android가 태동하던 때부터 애플리케이션 개발을 시작했다. 어느 날 정신을 차리고 보니 임베디드 엔지니어에서 모바일 엔지니어로 일하게 되었다. 개인적으로 CrossBridge라는 이름으로 활동하고 있다(https://crossbridge.biz).

요코야마 유우키

주식회사 Gunsy 소속, 이시카와 현의 카나자와 시에서 X-Ray 촬영기의 유지보수를 하는 일을 하다가, 친구의 권유로 도쿄로 상경해서 프로그래머가 되었다. 이후 검색 엔진 회사, 웹 미디어 회사를 거친 뒤 뉴스 애플리케이션을 개발하고 운용하는 현재 단계까지 오게 되었다. 좋아하는 것은 텀블러(Tumblr 서비스)와 덴키 그루브(일본의 음악 그룹)이다.

윤인성

어쩌다가 책을 집필/번역하기 시작해서, 지금까지 계속해서 집필/번역하고 있습니다. 현재 직업 특성상 집에서 나갈 이유가 별로 없다는 것에 굉장히 만족하고 있습니다. 오전에는 커피, 오후에는 홍차를 마십니다. 요리, 피아노, 기타, 작곡, 그림, 스컬핑 등의 취미를 갖고 있습니다. 《파이썬을 이용한 머신러닝, 딥러닝 실전 앱 개발》(위키북스, 2019) 등을 번역했으며, 이 책의 소개말을 쓰는 시점을 기준으로 이 책은 47번째 도서입니다.

  • [1부] 기본편
    •  
  • ▣ 01장: 크롤링과 스크레이핑
    • 01 크롤링과 스크레이핑
      • 크롤링과 스크레이핑
      • 크롤러가 주목받게 된 이유
      • 크롤링/스크레이핑할 때의 주의 사항
    • 02 Wget으로 시작하는 크롤러 개발
      • 처음 만들어보는 크롤러
      • macOS에 설치하기
      • 윈도우에 설치하기
      • 리눅스에 설치하기
      • Wget의 사용 방법
      • Wget을 크롤러로 사용해보기
      • 실제로 크롤링해보기
    • 03 유닉스 명령어
      • 명령 라인 셸 사용하기
      • 스크레이핑과 관련된 유닉스 명령어
      • 정규 표현식
      • 유닉스 명령어로 스크레이핑하기
    •  
  • ▣ 02장: 크롤러 설계하기
    • 01 크롤러 설계 기본
      • 크롤러의 종류
      • 목적과 대상을 명확하게 하기
      • URL 확인하기
      • 목적 데이터를 따로 제공하는지 확인하기
      • 웹 API
    • 02 크롤러가 가지는 각각의 처리를 설계할 때의 주의 사항
      • 설계가 필요한 부분
      • 네트워크 요청
      • 파싱(분석)
      • 스크레이핑과 정규 표현식
      • 데이터 저장소의 구조와 선택
    • 03 배치를 만들 때의 주의점
      • 배치란?
      • 설계
    •  
  • ▣ 03장: 크롤러 및 스크레이핑 개발 환경 준비와 파이썬 기본
    • 01 파이썬이 크롤링/스크레이핑에 적합한 이유
      • 파이썬을 사용하는 이유
    • 02 크롤링/스크레이핑 전용 개발 환경 준비하기
      • 파이썬 3 설치하기
    • 03 파이썬 기초 강의
      • 인터렉티브 셸과 스크립트 파일 실행하기
      • 코드 작성 방법
      • 숫자 자료형
      • 문자열
      • 자료 구조
      • 제어 구문
      • 함수와 클래스
    •  
  • ▣ 04장: 스크레이핑 기본
    • 01 라이브러리 설치하기
      • pip으로 라이브러리 설치하기
    • 02 웹 페이지 스크레이핑하기
      • 라이브러리 설치하기
      • 웹에 있는 리소스 추출하기
      • XPath와 CSS 선택자
      • HTML 소스 분석
    • 03 RSS 스크레이핑하기
      • 라이브러리 설치하기
    • 04 데이터를 데이터베이스에 저장하고 분석하기
      • 데이터를 데이터베이스에 저장해서 호출하기
      • MySQL 설치하기
      • 데이터베이스와 사용자 만들기
      • 파이썬에서 MySQL에 접속하기
      • 분석한 결과 저장하기
      • 셸에서 스크립트 실행하기
    •  
  • [02부] 응용편
    •  
  • ▣ 05장: 크롤러 설계/개발 (응용편)
    • 01 크롤러를 발전시키기
      • 크롤링 개발에서 직면할 수 있는 문제와 해결 방법
    • 02 print 함수로 로그 출력하기
      • 로그를 화면 또는 파일에 출력하는 방법
      • 로그 출력과 관련된 다양한 개선이 필요한 이유
    • 03 logging 모듈로 로그를 출력하고 관리하기
      • logging 모듈 사용하기
      • 딕셔너리 형식으로 설정 작성하기
    • 04 로그 출력 라이브러리로 로그 관리하기
      • 서드파티 로그 출력 라이브러리 사용하기
    • 05 병렬 처리하기
      • 병렬 처리하기
      • 표준 라이브러리 사용하기(한 대의 머신 병렬화하기)
      • 병렬로 내려받기
      • 작업 큐(여러 개의 머신을 사용해서 병렬 처리하기)
    • 06 병렬 처리할 때의 주의점
      • 병렬 처리할 때 주의해야 하는 점
      • 상태 관리
    •  
  • ▣ 06장: 스크레이핑 개발 (응용편)
    • 01 크롤링한 데이터를 구조화 데이터로 변환하기
      • 수집한 데이터를 구조화하기
      • 구조화한 데이터를 저장하려면
      • 수집한 데이터를 사용하려면
    • 02 XML로 변환하기
      • 데이터베이스를 만들고 테이블 등록하기
      • XML 사용하기
      • Orator 사용하기
      • 데이터를 분할해서 제공하기
    • 03 JSON으로 변환하기
      • JSON 사용하기
    • 04 CSV로 변환하기
      • CSV 사용하기
    • 05 Scrapy를 사용해서 스크레이핑하기
      • 다양한 스크레이핑
      • 특정 아이템 수만 추출하고 싶을 때
      • 수집한 아이템을 JSON으로 변환하고 파일로 저장하기
      • settings.py에 대해서
    • 06 링크를 따라 돌며 크롤링하기
      • 링크를 따라 돌며 크롤링하려면
    • 07 데이터베이스에 저장하기
      • 데이터베이스에 아이템 저장하기
    • 08 디버그하기
      • 시행착오를 반복하며 스크레이핑하기
    • 09 Scrapy로 프로그램 만들기
      • 스크립트 작성하기
    • 10 크롬 개발자 도구 사용하기
      • 크롬(Chrome)
    •  
  • ▣ 07장: 크롤러로 수집한 데이터 사용하기
    • 01 피드 만들기
      • 피드란?
      • RSS 형식
      • 네임 스페이스를 사용한 RSS 확장
      • feedgen을 사용해서 RSS 만들기
    • 02 플라스크(Flask)로 웹 API 만들기
      • 웹 API와 파이썬 웹 프레임워크
      • 플라스크를 사용한 웹 API 만들기
      • 데이터베이스 연결하기
      • 플라스크 플러그인: Flask-RESTful 사용하기
    • 03 장고(Django)로 웹 API 만들기
      • 장고를 사용해서 웹 API 만들기
      • film 테이블에서 아이템 추출하기
      • JSON으로 결과 확인하기
    • 04 태그 클라우드 만들기
      • 텍스트를 기반으로 태그 클라우드 만들기
    •  
  • ▣ 08장: 크롤러 유지보수와 운용
    • 01 정기적인 실행과 주기적인 실행
      • 정기적으로 크롤링하기
      • cron 환경 변수
      • 특정 디렉터리를 기준으로 실행할 때
      • 주기적으로 실행하기
      • 백그라운드에서 실행 지속하기
    • 02 다중 실행 방지하기
      • 동일 처리 다중 실행 대책
    • 03 관리 화면 사용하기
      • 크롤링 대상을 데이터베이스로 관
      • peewee와 flask-admin 사용하기
      • 장고 어드민 사용하기
    • 04 통지 기능 추가하기
      • 통지 기능을 추가하려면
      • 메일로 통지 보내기
      • 파이썬에서 메일 보내기
      • 슬랙(Slack)에 통지 보내기
    • 05 단위 테스트 만들기
      • 단위 테스트란?
      • 테스트 대상 코드와 테스트 코드 준비하기
      • 테스트 실행과 실행 결과
    •  
  • ▣ 09장: 목적에 맞는 크롤러 & 스크레이핑 개발 방법
    • 01 자바스크립트로 렌더링 되는 페이지를 스크레이핑하기
      • 자바스크립트로 렌더링되는 페이지를 스크레이핑하려면?
      • 파이썬 가상 환경과 venv
      • 크롬 헤드리스 모드의 명령 라인 실행
    • 02 공개 데이터 사용하기
      • 공개 데이터란?
    • 03 텀블러(Tumblr) 대시보드 크롤링하고 검색하기
      • 텀블러(Tumblr)란?
      • 글 검색 엔진 Whoosh
      • 본문 검색
      • 인덱스를 만드는 방법
      • N그램 사용하기
    •  
  • ▣ [부록] 유용한 라이브러리
    • 01 프로세스 관리 도구 Supervisor
      • Supervisor
    • 02 파이참(PyCharm) 사용하기
      • 파이참 설치하기
      • 프로젝트 만들기
      • 편리한 기능
      • 파이참 설정을 원하는 대로 변경하기
    • 03 NumPy와 SciPy 사용하기
      • NumPy란
      • SciPy
    • 04 베이그런트로 윈도우에 우분투 가상 환경 설치하기
      • 베이그런트 설치하기
      • 베이그런트로 우분투 가상 환경 설치하기
      • 베이그런트로 우분투 가상 환경 실행하기
      • 파일 공유하기