크롤링 핵심 가이드
도서명:크롤링 핵심 가이드
저자/출판사:타케조에,나오키,시마모토,타카코,타도코로,순스케,하기/위키북스
쪽수:294쪽
출판일:2018-07-12
ISBN:9791158391072
목차
▣ 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 정리