크롤링 핵심 가이드
웹 사이트 크롤링을 위한 실전 테크닉
타케조에 나오키 | 위키북스 | 2018-07-17
정보
리뷰 (0)
스토리 (0)
카테고리
국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 웹 서비스/웹 프로그래밍
페이지 수
294
내가 읽는데 걸리는 시간
앱에서 이용해주세요
책소개
실제 서비스에서 대규모 웹 크롤러를 개발/운용해 본 경험을 기반으로, 크롤러를 지탱하는 HTTP, 문자 코드, HTML, 인증, Ajax/JSON 등 웹 엔지니어가 꼭 기억해야 하는 포인트와 테크닉을 설명한다.
목차
▣ 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 정리