원치도 않은 내 홈페이지 정보를 크롤러가 가져가기도 하고
크롤러가 더 잘 가져가도록 설정을 해야되는 경우도 있다.
전자를 우리는 크롤링이라고 표현하고
후자를 검색엔진(Search Engine Optimization)최적화라고 한다.
하지만 두가지 개념은 정확하게 상반되는 개념은 아니다.
왜 상반되지 않는지 알아보도록 하자.
크롤러
- 정의
- 웹 크롤러(web crawler)는 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램 - 종류
- 빙봇, 구글봇, FAST Crawler, GM Crawl, PolyBot, RBSE 등 존재
크롤링
- 검색엔진은 새로운 페이지및 업데이트 된 페이지를 찾기 위해 색인에 추가 하는 과정
- 크롤러가 하는 작업을 크롤링이라고 하고 이때 대체로 방문한 사이트의 복사본을 생성하여 더 빨리 접근 할 수 있도록 제공한다.
- 시드(seeds)라고 불리는 URL 리스트에서부터 시작
- 페이지의 모든 하이퍼링크를 인식하여 URL 리스트를 갱신. 갱신된 URL 리스트는 재귀적으로 다시 방문
검색엔진
- 월드 와이드 웹에 존재하는 웹사이트와 여러 정보를 검색
- 정보를 긁어오는 도구를 크롤러라 부르고 이 행위를 크롤링이라 부른다.
- 국내 서비스 중 엔진
— 구글, Bing, Daum, zum, 네이버, 네이트 등
- 해외
— 구글, yahoo, AOL, Dogpile,바이두, 라이코스 등
검색엔진 최적화(Search Engine Optimization)
- 정의
검색엔진이 크롤링 하기 쉽도록 홈페이지 구조와 페이지를 개발하는 작업 - 방법
1. https 사용 : google은 2014년부터 https에 가산점을 부여하기로 결정, 전체 점수의 랭킹 1% 가산점 부여
2. 문법에 맞게 HTML 작성
- 강조는 <strong>, 제목은 <h1~6>, 테이블은 <table> 등 의미에 맞는 태그 사용
- 이미지의 alt, title 추가 등 접근성 관련 태그도 작성
3. 규격에 맞는 타이틀 : 타이틀 태그는 영문의 경우 공란 포함 65자, 한글은 32자
4. 규격에 맞는 메타디스크립션 : 영문 기준 320자, 한글 160자 정도
5. 콘텐츠와 연관된 URL설계 ex>”검색어 : 달리기” https://honggildong.co.kr/play/run (o)
https://honggildong.co.kr/page/12daaddbdcde (x)
- sitemap.xml 사용, 정해진 프로토콜에 의해 작성되면 되며, 위치는 상관없다.
- 규칙은 이곳을 참고
*기타 많은 방법들이 존재
검색엔진 최적화를 안시키려면
일반 사용자에게 노출되어서는 안되는 페이지들이 의도와 다르게 웹 사이트에 크롤링 되는 경우가 있다. 크롤링 후 인덱싱 되면 내 홈페이지가 원하지 않는데도 검색사이트에서 쉽게 내 홈페이지를 찾을 수 있게된다.
이런 상황을 막기위해서는 robots.txt 파일로 내 홈페이지를 크롤링 하지 않도록 설정을 하며, 해당 페이지에서 인덱싱이 되지 않도록 제어 태그를 추가한다.
robots.txt
- 웹사이트에 웹 크롤러같은 로봇들의 접근을 제어하기 위한 규약
- 표준이 없다. 그러므로 꼭 지킬 의무는 아니다.
- root 폴더 밑에 robots.txt 파일을 홈페이지 검색 허용하는 양식에 맞게 작성하면 된다.
//robots.txt
User-agent : 제어할 로봇 User-Agent
Allow : /경로/
Disallow : /허용하지 않는 경로/// 모든 문서 접근
User-agent: *
Allow: /// 모든 문서 차단
User-agent: *
Disallow: /
인덱싱
- 크롤러가 잘 수집한 정보를 말 그대로 인덱싱, 잘 정렬하는 역할을 한다.
*나의 경우는 이미 인덱싱이 되었지만 robots.txt 파일을 이용하여 모든 에이전트가 disallow 하도록 적용 하였지만 이미 인덱싱이 되어 간간히 내 페이지에 봇이 접근하는 것을 본적이 있다. 때문에 로봇이 접근하지 않게 하려면 아래 meta tag들을 상황에 맞게 넣어주어야 한다.
META TAG
- 메타태그는 기본적으로
<head>
섹션에 삽입을 해야합니다. - name에 bot의 이름을 넣을 수 있으며 모든 bot에 대해 적용하려면 robots를 넣어주면 된다.
<!DOCTYPE html>
<html><head>
<meta name="robots" content="noindex" />
<meta name="googlebot" content="noindex" />
</head>
<body>
</body>
</html>
- nofollow
- 내 사이트와 링크된 페이지를 연결하지 않기를 바라거나 링크된 페이지를 크롤링하지 않기를 바라는 경우
<meta name="robots" content="nofollow" />
- noarchive
- 검색결과에 저장된 페이지 링크를 표시하지 않습니다.
<meta name="robots" content="noarchive" />
- nosnippet
- 이 페이지에 대한 검색결과에 텍스트 스니펫 또는 동영상 미리보기를 표시하지 않는다.
<meta name="robots" content="nosnippet" />
*합쳐서 사용도 가능하다.
<meta name="robots" content="noindex,nofollow,noarchive,nosnippet" />
참고
- http://www.seo-korea.com/robots-txt-%ED%8C%8C%EC%9D%BC%EA%B3%BC-meta-robots-%ED%83%9C%EA%B7%B8%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90/
- http://blog.ab180.co/google-seo-guide-part-one/
- https://developers.google.com/search/reference/robots_txt?hl=ko
- https://ko.wikipedia.org/wiki/%EC%9B%B9_%ED%81%AC%EB%A1%A4%EB%9F%AC