파이썬 웹 스크래핑 2/e [수많은 데이터 사이에서 필요한 정보 수집하기]
- 원서명Python Web Scraping - Second Edition: Fetching data from the Web (ISBN 9781786462589)
- 지은이캐서린 자멀(Katharine Jarmul), 리차드 로손(Richard Lawson)
- 옮긴이김용환
- ISBN : 9791161752525
- 25,000원
- 2018년 12월 31일 펴냄
- 페이퍼백 | 272쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 검색 마케팅· 웹 분석
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
파이썬 3.7의 최신 기능을 사용해 웹 사이트에서 데이터를 스크래핑할 수 있는 최고의 가이드를 제공한다. 저자가 운영하는 예시 웹 사이트를 기반으로 스크래핑 테스트를 진행할 수 있다. 정적 웹 페이지에서 데이터를 추출하는 방법, 레디스와 파일을 캐싱으로 사용하는 방법, 동적 스크래핑 및 정교한 크롤러를 개발하는 방법을 다룬다. 그리고 PyQt와 Selenium을 사용하는 방법, 캡차(CAPTCHA)로 보호되는 복잡한 웹 사이트에 폼을 제출하는 방법, 병렬 다운로드를 사용하는 방법, Scrapy 라이브러리로 클래스 기반 스크래퍼를 생성하는 방법을 다룬다. 원서에서 제공하는 코드의 오타와 호환성, 예시 사이트 URL을 파이썬 3.7 기반으로 수정한 역자의 github 저장소(https://github.com/knight76/wswp)를 제공한다.
이 책에서 다루는 내용
■ 간단한 파이썬 프로그래밍으로 웹 페이지에서 데이터 추출
■ 병렬로 웹 페이지를 처리할 수 있는 병렬 크롤러 작성
■ 웹 사이트를 크롤링하기 위해 링크 추적
■ HTML에서 특징 추출
■ 재사용하기 위해 다운로드한 HTML 캐싱
■ 가장 빠른 크롤러 결정을 위해 병렬 모델 비교
■ 자바 스크립트 기반 웹 사이트 파싱 방법
■ 폼 및 세션으로 상호 작용하는 방법
이 책의 대상 독자
독자가 이전에 프로그래밍을 해본 경험이 있다는 것을 전제로 작성됐고 프로그래밍을 처음 접하는 초보자에게는 적합하지 않을 가능성이 높다. 웹 스크래핑 예시를 살펴보려면 파이썬에 능숙해야 하고 pip 커맨드를 실행해 모듈을 설치해야 한다.
그리고 웹 페이지가 어떻게 HTML로 작성되는지, 자바 스크립트로 업데이트되는지에 대한 지식이 있다고 가정한다. HTTP, CSS, AJAX, WebKit, Redis에 대해서 알고 있다면 유용할 수 있지만 필수는 아니며 개별 기술이 필요할 때 소개할 것이다.
이 책의 구성
1장, ‘웹 스크래핑 소개’에서는 웹 스크래핑이 무엇인지와 웹 사이트를 크롤링하는 방법을 소개한다.
2장, ‘데이터 스크래핑하기’에서는 여러 라이브러리를 사용해 웹 페이지에서 데이터를 추출하는 방법을 설명한다.
3장, ‘다운로드 캐싱’에서는 결과를 캐싱해 다시 다운로드하지 않는 방법을 설명한다.
4 장, ‘병렬 다운로드’에서는 웹 사이트를 병렬로 다운로드해 데이터를 빠르게 스크래핑하는 방법을 설명한다.
5장, ‘동적 콘텐츠’에서는 여러 방법을 통해 동적 웹 사이트에서 데이터를 추출하는 방법을 설명한다.
6장, ‘폼에서 상호 작용하기’에서는 검색과 로그인할 때 입력과 탐색과 같은 폼에서 어떻게 상호 작용하는지 설명한다.
7장, ‘캡차 해결하기’에서 캡차 이미지로 보호된 데이터에 접근하는 방법을 설명한다.
8장, ‘Scrapy’에서는 빠르게 병렬로 스크래핑할 수 있는 Scrapy 크롤링 스파이더를 사용하는 방법과 웹 스크래퍼를 개발하는 데 도움이 되는 Portia 웹 인터페이스 사용 방법을 설명한다.
9장, ‘모든 기술 활용하기’에서는 이 책을 통해 알게 된 웹 스크래핑 기술을 활용한다
목차
목차
- 1장. 웹 스크래핑 소개
- 웹 스크래핑이 유용한 시점은 언제일까?
- 웹 스크래핑은 합법적인가?
- 파이썬 3
- 웹 사이트 조사
- robots.txt 확인하기
- 사이트맵 확인하기
- 웹 사이트 규모 추정하기
- 웹 사이트에 사용하는 기술을 식별하기
- 웹 사이트의 소유자 찾기
- 첫 번째 웹 사이트 크롤링하기
- 스크래핑과 크롤링
- 웹 페이지 다운로드하기
- 다운로드 재처리하기
- 사용자 에이전트 설정하기
- 사이트맵 크롤러
- ID 반복 크롤러
- 링크 크롤러
- 고급 기능
- requests 라이브러리 사용하기
- 정리
- 2장. 데이터 스크래핑하기
- 웹 페이지 분석하기
- 웹 페이지를 스크래핑하는 세 가지 방법
- 정규식
- Beautiful Soup
- lxml
- CSS 선택자와 브라우저 콘솔
- Xpath Selectors
- LXML 및 패밀리 트리
- 성능 비교
- 스크래핑 결과
- 스크래핑 개요
- 링크 크롤러에 스크래핑 콜백 추가하기
- 정리
- 3장. 다운로드 캐싱
- 언제 캐싱을 사용할까?
- 링크 크롤러에 캐싱 기능 추가하기
- 디스크 캐싱
- DiskCache 구현
- 캐싱 테스트하기
- 디스크 공간 절약하기
- 오래된 캐싱 데이터 만료하기
- DiskCache의 단점
- 키-값 저장소 캐싱
- 키-값 저장소란
- 레디스 설치
- 레디스 소개
- 레디스 캐싱 구현
- 압축
- 캐싱 테스트
- requests-cache 탐색
- 정리
- 4장. 병렬 다운로드
- 100만 웹 페이지
- 알렉사 목록 파싱
- 순차적인 크롤러
- 스레드 크롤러
- 스레드와 프로세스의 동작 방법
- 멀티 스레드 크롤러 구현
- 멀티 프로세싱 크롤러
- 성능
- 파이썬 멀티 프로세싱과 GIL
- 정리
- 5장. 동적 콘텐츠
- 동적 웹 페이지의 예
- 동적 웹 페이지 리버스 엔지니어링
- 엣지 케이스
- 동적 웹 페이지 렌더링하기
- PyQt or PySide
- Qt로 디버깅하기
- 자바스크립트 실행하기
- 웹킷을 사용한 웹 사이트의 상호 작용
- 결과 기다리기
- PyQt or PySide
- 렌더링 클래스
- Selenium
- Selenium과 헤드리스 브라우저
- Selenium
- 정리
- 6장. 폼에서 상호 작용하기
- 로그인 폼
- 웹 브라우저에서 쿠키를 로드하기
- 로그인 스크립트를 확장해 콘텐츠 변경하기
- Selenium으로 폼 자동화하기
- 웹 스크래핑을 ‘인간’이 하는 것처럼 보여주는 방법
- 정리
- 로그인 폼
- 7장. 캡차 해결하기
- 계정 등록하기
- 캡차 이미지 로딩하기
- 광학 문자 인식
- 추가 개선 사항
- 복잡한 캡차 해결
- 캡차 해결 서비스 사용하기
- 9kw 시작하기
- 9kw 캡차 API
- 에러 알림
- 등록과 통합하기
- 9kw 시작하기
- 캡차와 머신 러닝
- 정리
- 계정 등록하기
- 8장. Scrapy
- Scrapy 설치
- 프로젝트 시작하기
- 모델 정의하기
- 스파이더 생성하기
- 설정 튜닝
- 스파이더 테스트
- 여러 스파이더 타입
- 쉘 커맨드로 스크래핑하기
- 결과 확인하기
- 크롤링 중단과 재개
- Scrapy 성능 튜닝
- Portia를 사용해 시각적으로 스크래핑하기
- 설치
- 주석
- 스파이더 실행하기
- 결과 확인하기
- Scrapely로 자동화된 스크래핑
- 정리
- 9장. 모든 기술 활용하기
- 구글 검색엔진
- 페이스북
- 웹 사이트
- 페이스북 API
- GAP
- BMW