크롤링 핵심 가이드(위키북스 데이터 사이언스 시리즈 17)
웹 사이트 크롤링을 위한 실전 테크닉
Regular price
$24.72
Sale price
Regular price
✈️
Estimated delivery date 예상 배송일
Standard Shipping
불러오는 중...
주문일로부터 8-12 영업일
Express Shipping
불러오는 중...
주문일로부터 6-8 영업일
웹 애플리케이션, 웹 서비스를 개발/운용하는 엔지니어라면, HTML/HTTP와 웹 서버 등의 웹 기술과 관련된 기초 지식을 알고 있어야 한다. 이 책에서는 실제 서비스에서 대규모 웹 크롤러를 개발/운용해 본 경험을 기반으로, 크롤러를 지탱하는 HTTP, 문자 코드, HTML, 인증, Ajax/JSON 등 웹 엔지니어가 꼭 기억해야 하는 포인트와 테크닉을 설명한다. 크롤러의 입장에서 보는 웹 사이트의 구조와 그 실정에 맞는, 실용적이고 효율적인 크롤링 방법을 설명한다.
◎ 실제 예를 바탕으로 HTTP, HTML 등의 웹과 관련된 내용을 깊게 알 수 있다.
◎ 대규모 크롤러를 개발/운용하는 노하우를 알 수 있다.
◎ 웹 사이트 운영자(크롤링 당하는 입장)도 크롤러와 관련된 지식을 얻을 수 있다.
◎ 실제 예를 바탕으로 HTTP, HTML 등의 웹과 관련된 내용을 깊게 알 수 있다.
◎ 대규모 크롤러를 개발/운용하는 노하우를 알 수 있다.
◎ 웹 사이트 운영자(크롤링 당하는 입장)도 크롤러와 관련된 지식을 얻을 수 있다.
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
목차
목차
▣ 1장: 크롤러를 지탱하는 기술
1-1 크롤러란?
1-2 크롤러의 구조
___크롤링
___스크레이핑
1-3 크롤러와 웹 기술
___데이터 저장하기
___웹 크롤러가 지켜야 하는 규칙
___크롤러가 직면한 과제
1-4 크롤러 만들어보기
___Java로 간단한 크롤러 구현하기
___크롤링/스크레이핑 전용 서비스와 도구
1-5 개발을 지원하는 도구
___curl
___브라우저의 개발자 도구
▣ 2장: HTTP 이해하기
2-1 HTTP 개요
___HTTP 통신 내용 보기
2-2 HTTP 메서드 사용 구분하기
___일부 메서드가 지원되지 않는 경우
___메서드의 사용 방법이 적절하지 않은 경우
___URL 인코드 방식의 차이에 따른 문제
2-3 믿을 수 없는 응답 상태
___상태 코드에 따라 적절히 처리하기
___오류가 발생했는데도 200을 응답하는 경우
___페이지가 존재하지 않는 경우의 리다이렉트
___서버에 접속할 수 없는 경우
___서버 오류가 발생했을 경우의 일반적인 대처 방법
___리다이렉트의 미묘한 의미 차이
2-4 HTTP 헤더 조정하기
___크롤러의 사용자 에이전트
___쿠키가 없으면 크롤링할 수 없는 웹 사이트
___국제화를 지원하는 웹 사이트 크롤링하기
2-5 프록시 서버를 경유해서 크롤링하기
___프록시 사용 시 HTTP 통신 내용 확인하기
___크롤러에서 프록시 사용하기
2-6 SSL 통신 때 발생하는 오류
___SSL 버전
___SSL 지원 사이트 크롤링하기
___자바의 AES 키 길이 문제
2-7 HTTP/2
___자바로 HTTP/2 다루기
2-8 정리
▣ 3장: 문자 깨짐 해결하기
3-1 크롤링과 문자 코드
3-2 왜 문자가 깨질까?
___컴퓨터와 문자
___문자 깨짐과 멀티 바이트 문자
3-3 클라이언트와 서버 간의 문자 깨짐
___문자 깨짐이 일어나는 위치
___애플리케이션과 데이터베이스
___텍스트 파일 읽고 쓰기
3-4 적절하게 문자 코드 다루기
___크롤링과 문자 코드
___인덱싱과 문자 코드
3-5 대표적인 문자 코드
___UTF-8
___EUC-KR
3-6 문자 코드와 관련해 발생할 수 있는 함정
___문자 코드 믿지 말기
___데이터베이스와 초밥① - 사라진 초밥 문제
___데이터베이스와 초밥② - 그림 문자 검색 문제
___트러블 슈팅을 위한 팁
3-7 문자 코드 추정하기
___juniversalchardet
___ICU4J
___자바 외 언어의 라이브러리
3-8 정리
▣ 4장: 스크레이핑 테크닉
4-1 HTML에서 데이터 추출하기
___정규 표현식
___XPath
___CSS 선택자
___HTML 이외의 데이터
4-2 CSS 선택자 사용하기
___지정한 위치의 요소 추출하기 - nth-child()
___텍스트 노드를 문자열로 검색하기 - contains()
___텍스트 노드를 정규 표현식으로 검색하기 - matched()
___자식 요소를 제외하고 검색하기 - containsOwn()과 matchesOwn()
___속성으로 검색하기
4-3 스크레이핑한 데이터 가공하기
___[예1] alt 속성에서 데이터 추출하기
___[예2] 주소 추출하기
___웹 페이지의 메타 데이터
4-4 메타 데이터 활용하기
___구조화 마크업
4-5 정리
▣ 5장: 인증하기
5-1 인증이 필요한 페이지를 크롤링하는 이유
___인증이 필요한 웹 사이트를 크롤링할 때 지켜야 할 사항
5-2 다양한 인증 방식과 크롤링 방법
___HTTP 인증
___입력 양식 기반 인증
___2단계 인증
___CAPTCHA를 사용한 BOT 대책
5-3 웹 API를 사용해 정보 추출하기
___접근키로 인증하기
___OAuth 2.0
___인증과 허가
___pac4j를 사용해 GitHub OAuth 사용해 보기
5-4 정리
▣ 6장: 크롤링 응용 테크닉
6-1 크롤러가 지켜야 하는 매너
___요청 수와 요청 간격 제한
___크롤링 제한하기
6-2 필요한 페이지만 크롤링하기
___페이징
___의외로 잘 사용하지 않는 사이트맵 XML
___RSS 또는 Atom을 기반으로 사이트의 변경 정보 추출하기
___콘텐츠를 캐시해서 통신 줄이기
___gzip 압축으로 응답 빠르게 만들기
6-3 제거된 콘텐츠 판정하기
___콘텐츠에 명시적으로 적혀 있는 기간 사용하기
___대상 사이트를 정기적으로 크롤링하기
___인덱스한 URL을 정기적으로 확인하기
___목록 페이지에 URL이 존재하지 않는 경우 삭제된 것으로 판정하기
___남은 문제
6-4 웹 사이트의 변경 시점 및 변경 빈도 학습하기
___명시된 변경일 찾기
___오류
___변경 빈도에 따라 크롤링 빈도 조정하기
___크롤링 소요 시간을 기반으로 크롤러의 리소스 사용량 조절하기
6-5 가장 효율적인 방법 = 크롤링하지 않기
6-6 정리
▣ 7장: 자바스크립트 가지고 놀기
7-1 Ajax와 SPA
___자바스크립트를 사용한 웹 페이지의 예
___크롤러의 관점에서 살펴본 자바스크립트
7-2 자바스크립트와의 싸움 피하기
___자바스크립트의 동작 재현하기
___크롤러를 위한 정보 찾기
___모바일 사이트
7-3 브라우저 조작과 도구 활용하기
___Selenium WebDriver 사용해 보기
7-4 정리
1-1 크롤러란?
1-2 크롤러의 구조
___크롤링
___스크레이핑
1-3 크롤러와 웹 기술
___데이터 저장하기
___웹 크롤러가 지켜야 하는 규칙
___크롤러가 직면한 과제
1-4 크롤러 만들어보기
___Java로 간단한 크롤러 구현하기
___크롤링/스크레이핑 전용 서비스와 도구
1-5 개발을 지원하는 도구
___curl
___브라우저의 개발자 도구
▣ 2장: HTTP 이해하기
2-1 HTTP 개요
___HTTP 통신 내용 보기
2-2 HTTP 메서드 사용 구분하기
___일부 메서드가 지원되지 않는 경우
___메서드의 사용 방법이 적절하지 않은 경우
___URL 인코드 방식의 차이에 따른 문제
2-3 믿을 수 없는 응답 상태
___상태 코드에 따라 적절히 처리하기
___오류가 발생했는데도 200을 응답하는 경우
___페이지가 존재하지 않는 경우의 리다이렉트
___서버에 접속할 수 없는 경우
___서버 오류가 발생했을 경우의 일반적인 대처 방법
___리다이렉트의 미묘한 의미 차이
2-4 HTTP 헤더 조정하기
___크롤러의 사용자 에이전트
___쿠키가 없으면 크롤링할 수 없는 웹 사이트
___국제화를 지원하는 웹 사이트 크롤링하기
2-5 프록시 서버를 경유해서 크롤링하기
___프록시 사용 시 HTTP 통신 내용 확인하기
___크롤러에서 프록시 사용하기
2-6 SSL 통신 때 발생하는 오류
___SSL 버전
___SSL 지원 사이트 크롤링하기
___자바의 AES 키 길이 문제
2-7 HTTP/2
___자바로 HTTP/2 다루기
2-8 정리
▣ 3장: 문자 깨짐 해결하기
3-1 크롤링과 문자 코드
3-2 왜 문자가 깨질까?
___컴퓨터와 문자
___문자 깨짐과 멀티 바이트 문자
3-3 클라이언트와 서버 간의 문자 깨짐
___문자 깨짐이 일어나는 위치
___애플리케이션과 데이터베이스
___텍스트 파일 읽고 쓰기
3-4 적절하게 문자 코드 다루기
___크롤링과 문자 코드
___인덱싱과 문자 코드
3-5 대표적인 문자 코드
___UTF-8
___EUC-KR
3-6 문자 코드와 관련해 발생할 수 있는 함정
___문자 코드 믿지 말기
___데이터베이스와 초밥① - 사라진 초밥 문제
___데이터베이스와 초밥② - 그림 문자 검색 문제
___트러블 슈팅을 위한 팁
3-7 문자 코드 추정하기
___juniversalchardet
___ICU4J
___자바 외 언어의 라이브러리
3-8 정리
▣ 4장: 스크레이핑 테크닉
4-1 HTML에서 데이터 추출하기
___정규 표현식
___XPath
___CSS 선택자
___HTML 이외의 데이터
4-2 CSS 선택자 사용하기
___지정한 위치의 요소 추출하기 - nth-child()
___텍스트 노드를 문자열로 검색하기 - contains()
___텍스트 노드를 정규 표현식으로 검색하기 - matched()
___자식 요소를 제외하고 검색하기 - containsOwn()과 matchesOwn()
___속성으로 검색하기
4-3 스크레이핑한 데이터 가공하기
___[예1] alt 속성에서 데이터 추출하기
___[예2] 주소 추출하기
___웹 페이지의 메타 데이터
4-4 메타 데이터 활용하기
___구조화 마크업
4-5 정리
▣ 5장: 인증하기
5-1 인증이 필요한 페이지를 크롤링하는 이유
___인증이 필요한 웹 사이트를 크롤링할 때 지켜야 할 사항
5-2 다양한 인증 방식과 크롤링 방법
___HTTP 인증
___입력 양식 기반 인증
___2단계 인증
___CAPTCHA를 사용한 BOT 대책
5-3 웹 API를 사용해 정보 추출하기
___접근키로 인증하기
___OAuth 2.0
___인증과 허가
___pac4j를 사용해 GitHub OAuth 사용해 보기
5-4 정리
▣ 6장: 크롤링 응용 테크닉
6-1 크롤러가 지켜야 하는 매너
___요청 수와 요청 간격 제한
___크롤링 제한하기
6-2 필요한 페이지만 크롤링하기
___페이징
___의외로 잘 사용하지 않는 사이트맵 XML
___RSS 또는 Atom을 기반으로 사이트의 변경 정보 추출하기
___콘텐츠를 캐시해서 통신 줄이기
___gzip 압축으로 응답 빠르게 만들기
6-3 제거된 콘텐츠 판정하기
___콘텐츠에 명시적으로 적혀 있는 기간 사용하기
___대상 사이트를 정기적으로 크롤링하기
___인덱스한 URL을 정기적으로 확인하기
___목록 페이지에 URL이 존재하지 않는 경우 삭제된 것으로 판정하기
___남은 문제
6-4 웹 사이트의 변경 시점 및 변경 빈도 학습하기
___명시된 변경일 찾기
___오류
___변경 빈도에 따라 크롤링 빈도 조정하기
___크롤링 소요 시간을 기반으로 크롤러의 리소스 사용량 조절하기
6-5 가장 효율적인 방법 = 크롤링하지 않기
6-6 정리
▣ 7장: 자바스크립트 가지고 놀기
7-1 Ajax와 SPA
___자바스크립트를 사용한 웹 페이지의 예
___크롤러의 관점에서 살펴본 자바스크립트
7-2 자바스크립트와의 싸움 피하기
___자바스크립트의 동작 재현하기
___크롤러를 위한 정보 찾기
___모바일 사이트
7-3 브라우저 조작과 도구 활용하기
___Selenium WebDriver 사용해 보기
7-4 정리
저자
저자
타케조에 나오키
저자 타케조에 나오키 (竹添 直樹)
주식회사 비즈 리치 소속의 Scala를 사랑하는 프로그래머이다. 업무와 함께 OSS 활동, 서적 집필 등을 하고 있다. GitBucket, Apache PredictionIO, Scalatra 등의 커미터도 맡고 있다.
주식회사 비즈 리치 소속의 Scala를 사랑하는 프로그래머이다. 업무와 함께 OSS 활동, 서적 집필 등을 하고 있다. GitBucket, Apache PredictionIO, Scalatra 등의 커미터도 맡고 있다.
Payment & Security
Payment methods
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.

