[ 파이썬 으로 웹 크롤러 만들 기 ] 크롤링 시작 하 기 ( 3 / 3 ) - 한빛 미디어 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 크롤링 시작 하 기 ( 3 / 3 ) 
 | by 한선 용 
 필자 가 웹 스 크레이 핑 에 대해 이야기 할 때 마다 누군가 는 항상 이렇게 묻 습니다 . “ 구글 같 은 기업 은 어떻게 만들 어 지 나요 ? ” 필자 의 대답 은 항상 같 습니다 . “ 첫째 , 수십억 달러 를 모아 세계 에서 가장 훌륭 한 데이터 센터 를 만들 고 세계 곳곳 에 배치 합니다 . 두 번 째 로 , 웹 크롤러 를 만듭니다 . ” 
 구글 이 1996 년 에 처음 시작 되 었 을 때 는 단 두 명 의 스탠퍼드 대학원 생 뿐 이 었 고 , 그 들 이 가진 건 낡 은 서버 와 파이썬 웹 크롤러 뿐 이 었 습니다 . 이제 당신 도 이 사실 을 알 았 으니 , 다음 IT 억만장자 가 될 수단 을 갖춘 겁니다 ! 
 진지 하 게 말 해서 , 웹 크롤러 는 여러 가지 최신 웹 기술 의 핵심 에 있 고 , 웹 크롤러 를 사용 하 기 위해 반드시 거대 한 데이터 센터 가 필요 하 지 는 않 습니다 . 도메인 간 데이터 분석 을 위해서 는 인터넷 의 무수히 많 은 페이지 에서 데이터 를 가져오 고 해석 할 수 있 는 크롤러 가 필요 합니다 . 
 이전 예제 와 마찬가지 로 지금 부터 만들 웹 크롤러 도 링크 를 따라 페이지 와 페이지 를 이동 합니다 . 하지만 이번 에 는 외부 링크 를 무시 하 지 않 고 따라갈 겁니다 . 한 가지 도전 이 추가 됩니다 . 이번 에 는 각 페이지 에 관한 정보 를 기록 할 수 있 는지 알아볼 겁니다 . 여태 까지 했 던 것 처럼 도메인 하나 만 다루 는 것 보다 는 어려울 겁니다 . 웹 사이트 마다 레이아웃 이 완전히 다르 니까요 . 따라서 어떤 정보 를 찾 을지 , 어떻게 찾 을지 매우 유연 한 사고방식 을 가져야 합니다 . 
 CAUTION _ 지금 부터 일어날 일 은 아무 도 모릅니다 	 다음 섹션 에서 사용 할 코드 는 인터넷 어디 든지 갈 수 있 음 을 염두 에 두 십시오 . 위키백과 의 여섯 다리 를 이해 했 다면 http : / / www . sesamestreet . org / 에서 단 몇 번 의 이동 으로 도 이상 한 사이트 에 도달 할 수 있 다는 것 도 이해 할 겁니다 . 	 미성년자 라면 이 코드 를 실행 하 기 전 에 먼저 부모 와 상의 하 십시오 . 법 규정 이나 종교 적 인 이유 로 성 적 인 사이트 의 텍스트 를 읽 는 것 을 금지 한다면 , 이후 의 코드 예제 를 읽 는 건 상관없 어도 실제 실행 할 때 는 주의 를 기울이 십시오 . 	 단순히 외부 링크 를 닥치 는 대로 따라가 는 크롤러 를 만들 기 전 에 먼저 자신 에게 다음 과 같 은 질문 을 해 보 십시오 . 
 내 가 수집 하 려 하 는 데이터 는 어떤 것 이 지 ? 정해진 사이트 몇 개 만 수집 하 면 되 나 ? ( 이런 경우 , 거의 틀림 없이 더 쉬운 방법 이 있 습니다 . ) 아니 면 그런 사이트 가 있 는지 조차 몰랐 던 사이트 에 도 방문 하 는 크롤러 가 필요 할까 ? 	 크롤러 가 특정 웹 사이트 에 도달 하 면 , 즉시 새 웹 사이트 를 가리키 는 링크 를 따라가 야 할까 ? 아니면 한 동안 현재 웹 사이트 에 머물 면서 파고들 어야 할까 ? 	 특정 사이트 를 스크랩 에서 제외 할 필요 는 없 나 ? 비 영어 권 콘텐츠 도 수집 해야 할까 ? 	 만약 크롤러 가 방문 한 사이트 의 웹 마스터 가 크롤러 의 방문 을 알아차렸 다면 나 자신 을 법 적 으로 보호 할 수 있 을까 ? ( 이 주제 에 관해서 는 부록 C 를 읽 어 보 십시오 . ) 
 파이썬 함수 를 결합 하 면 다양 한 웹 스 크레이 핑 을 실행 하 는 코드 를 쉽 게 만들 수 있 고 , 이 는 50 줄 도 안 되 는 코드 로 도 충분히 가능 합니다 . 
 [ 그림 3 - 1 ] 은 이러 한 작업 내용 을 시각 화 한 순서도 입니다 . 
 그림 3 - 1 인터넷 사이트 를 탐색 하 는 스크립트 순서 도 
 CAUTION _ 예 제 프로그램 을 실무 에 쓰 지 마십시오 	 공백 과 가독성 때문 에 , 이 책 에 있 는 예제 프로그램 에 는 실무 코드 라면 당연히 있 어야 할 점검 내용 과 예외 처리 가 항상 들 어 있 지 는 않 습니다 . 	 예 를 들 어 이 크롤러 가 방문 한 사이트 에 외부 링크 가 하나 도 없 다면 ( 흔치 않 지만 , 크롤러 를 오래 실행 한다면 언젠가 반드시 일어납니다 ) , 이 프로그램 은 파이썬 의 재귀 제한 에 걸릴 때 까지 계속 실행 됩니다 . 	 이 코드 를 중요 한 목적 에 쓰 기 전 에 잠재 적 함정 을 처리 할 수 있 는 코드 를 잊 지 말 고 넣 으십시오 . 	 작업 을 ‘ 이 페이지 에 있 는 모든 외부 링크 를 찾 는다 ’ 같 은 단순 한 함수 로 나누 면 , 나중 에 코드 를 다른 크롤링 작업 에 쓸 수 있 도록 리팩토링 하 기 쉽 습니다 . 예 를 들 어 사이트 전체 에서 외부 링크 를 검색 하 고 각 링크 마다 메모 를 남기 고 싶 다면 다음 과 같 은 함수 를 추가 하 면 됩니다 . ( 역 자주 _ 이 예제 코드 및 원서 깃 허브 에 있 는 코드 는 상대 경로 를 제대로 처리 하 지 못해 http : / / oreilly . com 사이트 에서 작동 하 지 않 습니다 . 이 에 상대 경로 를 처리 할 수 있 게 소스 코드 일부 를 수정 했 습니다 . ) 
 그림 3 - 2 웹 사이트 의 외부 링크 를 모두 수집 하 는 크롤러 의 순서 도 
 실제 코드 를 작성 하 기 전 에 그 코드 가 무슨 일 을 하 는지 다이어그램 을 그려 보 거나 메모 해 보 는 습관 을 들이 는 게 좋 습니다 . 크롤러 가 복잡 해 지 면 이런 습관 이 시간 을 매우 많이 절약 해 주 고 , 좌절 하 는 일 도 훨씬 줄어들 겁니다 . 
 리 다이렉트 처리 	 리 다이렉트 를 사용 하 면 같 은 웹 페이지 를 다른 도메인 이름 아래 에서 볼 수 있 습니다 . 리 다이렉트 는 크 게 두 가지 입니다 . 	 서버 쪽 리 다이렉트 . 페이지 를 불러오 기 전 에 URL 이 바뀝니다 . 	 클라이언트 쪽 리 다이렉트 . 이따금 페이지 를 리 다이렉트 하 기 전 에 ‘ You will be directed in 10 seconds . ..’ 같 은 메시지 가 나올 때 도 있 습니다 . 	 이 섹션 에서 는 서버 쪽 리 다이렉트 를 다룹니다 . 자바 스크립트 나 HTML 을 사용 하 는 클라이언트 쪽 리 다이렉트 에 대해서 는 10 장 을 보 십시오 . 	 서버 쪽 리 다이렉트 에 대해서 는 보통 별로 신경 쓸 일 이 없 습니다 . 파이썬 3 . x 에서 제공 하 는 urllib 라이브러리 가 리 다이렉트 를 자동 으로 처리 해 주 니까요 . 그저 이따금 크롤링 하 는 페이지 URL 이 입력 한 URL 과 정확히 일치 하 지 않 을 수 있 다는 것 만 기억 하 면 됩니다 . 	 좋 아요 
 TAG : 파이썬 , 웹 크롤러 , 인터넷 , 웹 스크레이퍼 관련 콘텐츠 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 고급 HTML 분석 ( 4 / 4 ) 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 고급 HTML 분석 ( 3 / 4 ) 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 고급 HTML 분석 ( 2 / 4 ) 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 고급 HTML 분석 ( 1 / 4 ) 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 크롤링 시작 하 기 ( 2 / 3 ) 
 [ 파이썬 으로 웹 크롤러 만들 기 ] 크롤링 시작 하 기 ( 1 / 3 )