용어 사전
robots.txt
사이트가 크롤러에게 허락하는 범위를 적어 둔 파일
robots.txt는 사이트가 크롤러에게 "여기는 가져가도 되고, 여기는 가져가지 말아 달라"고 적어 둔 파일입니다. 사이트 주소 뒤에 /robots.txt를 붙여 열면 누구나 볼 수 있습니다.
읽는 법
User-agent: 아래 규칙이 어느 크롤러에게 해당하는지 적습니다.*는 모든 크롤러입니다.Disallow: 가져가지 말아 달라는 경로입니다. 이 경로로 시작하는 주소가 모두 해당합니다.Allow: 가져가도 되는 경로입니다.Disallow한 범위 안에서 일부만 열어 줄 때도 씁니다.Crawl-delay: 요청 사이에 둘 간격(초)입니다. 모든 크롤러가 이 줄을 따르지는 않습니다. 구글도 따르지 않습니다.
그림에서 /admin/orders는 /admin으로 시작하므로 금지입니다. /products/42는 Allow: /products에 해당하므로 가져가도 됩니다.
아래 robots.txt에는 Allow: /admin/help 줄이 하나 더 있습니다. 주소를 바꿔 넣으며 어느 줄 때문에 허용이나 금지가 되는지 확인해 보세요. /admin/help처럼 두 줄이 함께 해당하면 경로가 더 긴 줄을 따릅니다.
shop.example.com/robots.txt
- 1User-agent:*
- 2Allow:/products
- 3Disallow:/admin이 줄을 따름
- 4Allow:/admin/help
- 5Disallow:/cart
- 6Crawl-delay:2
✕ 가져가지 말아 달라고 적혀 있음
약속이지 잠금장치가 아닙니다
robots.txt는 사이트가 요청하는 것이지 기술적으로 막는 장치가 아닙니다. 지키지 않아도 크롤러는 돌아갑니다. 하지만 지키지 않으면 사이트가 내 접속을 막을 수 있고, 이용약관 위반이 될 수도 있습니다. robots.txt에서 허락한 페이지라도 이용약관이 수집을 금지하거나 개인정보가 들어 있다면 가져가면 안 됩니다.
크롤러에 넣기
Python에는 robots.txt를 읽는 urllib.robotparser가 기본으로 들어 있습니다. AI에게 크롤러를 맡길 때 함께 요청하면 됩니다.
"크롤링하기 전에 urllib.robotparser로 robots.txt를 확인해서, 금지된 경로는 건너뛰게 해 줘. 요청 사이에는 2초씩 쉬게 해 줘."
robots.txt와 sitemap.xml
robots.txt가 "여기는 가져가지 말아 달라"는 목록이라면, sitemap.xml은 반대로 "이 페이지들을 가져가 달라"고 검색 엔진에게 알려 주는 목록입니다. robots.txt 안에 Sitemap: 줄로 sitemap.xml의 위치를 적어 두기도 합니다.