crawling - robots.txt와 주의점
크롤러를 만들기 전에 알아야 할 사항
웹페이지의 내용을 가져 오는 것을 크롤링(Crawling) 또는 스크래핑(Scraping)이라고 합니다.
가져와야 할 페이지들이 많은 경우, 구글이나 네이버, 다음과 같은 검색 엔진 사이트들은 검색 속도를 높이기 위해 robot 이라는 프로그램을 만들어서 자동으로 웹 페이지들을 크롤링하는 방법을 사용합니다.
그런데 개인 정보가 들어있는 사이트들은 크롤링이 안 되도록 막고 싶을 수 있습니다. 그래서 무분별한 크롤링을 막고 제어하기 위해 1994년 6월에 로봇 배제 규약이 만들어졌습니다. 말 그대로 로봇이 수집을 못하게 막을 목적으로 만들어졌는데 로봇의 접근 관련 내용(크롤링 허가/불허의 여부)을 robots.txt라는 파일에 적어두는 방법입니다.
만약 크롤링하는 로봇 프로그램이 http://www.example.com
의 웹 사이트를 방문할 경우 가장 먼저 http://www.example.com/robots.txt
파일을 찾게 됩니다.
그리고 robots.txt 파일이 있을 경우 파일을 읽어 그 내용을 분석해서 수집해도 되는 콘텐츠만 수집하고 허락이 안 된 내용은 수집하지 않습니다.
이 규약의 의도는 좋지만 강제 안이 아닌 권고 안이라서 접근 방지 설정을 하였다고 해도, 다른 사람들이 그 파일에 접근할 수 있습니다.
robots.txt 엔 아래와 같은 내용이 들어 있습니다.
User-agent: * # 모든 로봇(robot)들에 적용합니다
Disallow: / # 모든 페이지들의 색인(indexing)을 금지합니다
Uuser-agent : 접근을 허용하지 않을 로봇 이름을 설정합니다
Disallow : 허용하지 않을 항목에 대해 설정합니다
# 단 "Disallow"를 빈 값으로 설정할 경우, 모든 하위 경로에 대한 접근이 가능합니다
# 그리고 robots.txt 파일에는 최소한 한 개의 "Disallow" 필드(field)가 존재해야만 합니다
# 아래의 형식으로 사용됩니다
Disallow: /help # /help.html 과 /help/index.html 둘 다 허용 안됩니다
Disallow: /help/ # /help/index.html는 허용 안하나, /help.html 은 허용됩니다
만약 특정 파일 확장자를 차단하는 방법은 robots.txt 파일에 아래의 내용을 추가하면 됩니다.
Disallow: /*.xml$ # 루트 하위에 있는 확장자가 xml인 모든 파일의 색인을 거부합니다
Disallow: /test.html? # 루트 하위에 test.html과 ?가 포함된 파일의 색인을 거부합니다
위의 내용은 robots.txt 파일을 사용할 경우이지만 파일을 사용하지 않고 HTML 소스 코드안에 메타 태그를 사용하여 설정할 수도 있습니다.
<meta name="ROBOTS" content="속성"/>
content 항목의 속성 값으로는 다음의 6가지가 올 수 있습니다.
index
: 해당 페이지 정보를 검색해서 등록하는 것을 허락합니다.noindex
: 해당 페이지 정보를 검색해서 등록하는 것을 허락하지 않습니다.follow
: 해당 페이지에 있는 링크를 추적하는 것을 허락합니다.nofollow
: 해당 페이지에 있는 링크를 추적하는 것을 허락하지 않습니다.all
: 해당 페이지의 정보를 검색해서 등록하고 해당 페이지에 있는 링크를 추적하는 것을 허락합니다.none
: 해당 페이지의 정보를 검색해서 등록하거나 해당 페이지에 있는 링크를 추적하는 것을 허락하지 않습니다.
만얃 여러 속성값을 동시에 지정하고자 할 때는 content=”noindex,nofollow”와 같이 쉼표로 구분하여 작성하면 되고 기본값은 “index,follow”입니다.
주의해야 할 점은 크롤링 해도 된다라고 해서 저작권 문제까지 자유로운 것은 아니라는 것입니다. 특히 신문기사나 책, 논문, 사진 등의 자료들은 저작권에 특별히 주의해야 합니다.
Let me know what you think of this article in the comment section below!