노트와 노트

파이썬 웹 크롤링(Python Web Crawling) (1) - robots.txt & 웹 사이트 이용 약관 확인하기 본문

Programming/Python

파이썬 웹 크롤링(Python Web Crawling) (1) - robots.txt & 웹 사이트 이용 약관 확인하기

gellygelly 2021. 8. 30. 21:05

[용어 정리] 

  • 크롤링(Crawling): 웹 사이트, 하이퍼링크, 데이터, 정보 자원을 자동화된 방법으로 수집, 분류, 저장하는 것.
  • 크롤러(Crawler): 크롤링을 위해 개발된 소프트웨어.
  • 스크래핑(scraping): 소프트웨어를 통해 대상 웹사이트와 같은 데이터 소스에서 데이터 자체를 추출하여 특정 형태로 저장하는 것. 

※출처: [네이버 지식백과] 크롤링 [crawling] (IT용어사전, 한국정보통신기술협회)

 


웹 페이지를 크롤링하는 작업은 상당한 양의 정보들을 빠르게 수집할 수 있어 크롤링을 하는 사람 입장에서는 굉장히 편리한 기술이지만, 정보를 무단으로 복제하게 되면 지식재산권 침해서버에 상당한 부담을 줄 수 있다. 

 

실제로 우리나라에서도 크롤링 프로그램을 통해 타 회사 앱에서 제공하는 정보를 무단으로 복제하여 벌금형을 받은 경우가 존재하며*, 웹크롤링을 통해 정보를 수집해오는 것 자체가 저작물에 해당하지 않더라도 웹사이트가 데이터베이스에 해당할 소지가 있으므로 해당 권리의 침해 가능성이 인정된다는 법원(서울고등법원 2016나2019365 판결)의 판단이 있었다(다만 영리목적을 제외한 교육, 학술 또는 연구, 시사보도를 위해 이용하는 경우는 제외됨)**. 

 

*출처: https://zdnet.co.kr/view/?no=20200211153634 

 

法 “여기어때, 야놀자 정보 무단수집 맞다”...前 대표 ‘유죄’

경쟁사인 야놀자의 제휴 숙박업소 목록 등을 영업 목적으로 수집한 혐의로 여기어때 창업자인 심명섭 전 대표에게 유죄가 선고됐다.또 같은 혐의로 재판에 넘겨진 직원들도 유죄와 ...

zdnet.co.kr

**출처: https://kin.naver.com/qna/detail.naver?d1id=6&dirId=60205&docId=392263072&qb=7Ju5IO2BrOuhpOungQ==&enc=utf8&section=kin.ext&rank=2&search_sort=0&spq=0

 

 

이러한 문제를 사전에 방지하기 위해 웹 페이지 소유자는 웹 페이지에 로봇 배제 표준(robots exclusion standard)을 사용하여 접근 제한에 대한 설명을 robots.txt에 기술해 두었으며, robots.txt와 홈페이지의 이용 약관 및 정책을 참고하여 

허락된 범위에 한정해서 크롤링을 진행하는 것이 바람직하다. 

 


robots.txt 확인

 

robots.txt를 확인하는 방법은 간단하다. 검색창에 '홈페이지 주소/robots.txt'를 입력하면 아래 그림과 같이 robots.txt 문서가 나타난다. 예시로 티스토리 웹 사이트의 robots.txt를 확인해보았다.

 

 

티스토리 웹사이트의 robots.txt

 

robots.txt를 살펴보면, User-agent, Disallow, Allow라는 세 개 단어가 등장하는데, 각각의 의미는 다음과 같다.

  • User-agent: 규칙이 적용되는 크롤러를 식별함. 위 티스토리의 robots.txt에서는 모든 크롤러를 대상으로 일관된 규칙을 적용함. 아래 무신사 스토어의 robots.txt를 보면, 각 크롤러별로 다른 규칙을 적용한 것을 알 수 있음.
  • Allow: 크롤링 할 수 있는 URL 경로. 'Allow : /'라고 기재되어 있을 경우, 모든 경로에 대해 접근을 허용하는 것.
  • Disallow: 크롤링할 수 없는 URL 경로. 'Disallow : /'라고 기재되어 있을 경우, 모든 경로에 대해 접근을 제한하는 것.

무신사 스토어 robots.txt 

티스토리는 모든 크롤러에 대해 /m, /login, /gateway 경로를 제외한 다른 경로는 크롤링을 허용하고 있고, 무신사 스토어의 경우 Googlebot, Yeti, Daumoa, Daum 크롤러는 외의 다른 크롤러는 크롤링을 허용하고 있지 않다. 

 

크롤러를 개발하기 전에는 이처럼 robots.txt에 적힌 사이트 접근 제한에 관련된 정보를 확실하게 확인 후, 크롤링을 진행해야 한다. 

 

※참고※ | robots.txt 소개 및 가이드

https://developers.google.com/search/docs/advanced/robots/intro?hl=ko


웹 사이트 이용 약관 확인

 

간혹 어떤 사이트는 아래와 같이 모든 크롤러에 대해 모든 접근을 허용한다고 robots.txt에 적어둔 경우가 있다. 

 

User-agent : *
Allow: /

 

이런 경우에는 웹 사이트의 이용 약관을 한 번 훑어볼 필요가 있다. 대표적인 예가 'G마켓'이다.

 

 

g마켓 robots.txt

 

G마켓의 robots.txt를 확인해 보면 모든 크롤러에 대해 사이트 내의 모든 접근을 허용한다고 적혀 있으나, G마켓 홈페이지의 하단 문구에는 '사이트의 상품/판매자/쇼핑정보/컨텐츠/UI에 대한 스크래핑 등의 행위는 엄격히 금지'된다는 문구가 적혀있다. 

 

따라서, robots.txt에 별도의 접근 제한 규칙이 적혀있지 않아도, 사이트의 하단에 적힌 문구, 이용 약관 등을 꼼꼼히 확인하여 지식재산권을 침해하지 않도록 유의해야 한다. 

 


그 외 주의할 점

 

 아무리 사이트 이용약관 및 robots.txt 내에서 웹 사이트의 접근을 허용했다 해도, 1) 상업적 목적으로 데이터를 수집 하거나, 2) 서버에 과도한 부하를 주거나, 3) 사용자의 민감한 정보를 수집하거나 하는 행위는 피하는 것이 좋다. 

 

사실 웬만한 웹 사이트들은 위의 세 개 행위를 하지 않는 한, 특히 비 상업적 목적의 연구&개인 공부 목적으로만 데이터를 수집하는 경우에는 거의 책임을 묻지 않고 넘어가는 경우가 대다수이긴 하다. 그래도 서버 관리자 입장에서 달가운 일이 아닌 것임은 분명하니 가능하면 크롤링을 할 때 위의 세 가지 행위는 반드시 피하자. 

 

 

 

다음에는 BeautifulSoup를 이용해서 웹 사이트 내의 정보를 수집하는 간단한 프로그램을 작성해 볼 예정이다.