서론
Q. 올리브영 글로벌 사이트에서, 일본어로 설정 후 크롤링하면 일본 상품 그대로 긁어올 수 있을거같은데, 어디까지 크롤링이 가능할까요 ?
A. 올리브영 글로벌 사이트에서 개발자 도구로 네트워크 탭(JS 기반)도 한번 보고, 올리브영 robot.txt 사이트에서 Allow 로 허용된 범위 확인해볼게용
실제로 내가 프로젝트를 진행하면서 들었던 질문과 답변이였다. 데이터 크롤링은 저작권이라는 법적인 문제와 직결되어있는 예민한 사항이였기때문에, 그만큼 세세하게 리서치를 해보면서 고민했던 내용을 공유하고자 포스팅을 작성하게 되었다
본문
먼저 서론에서 답변으로 나왔었던 robot.txt 란 무엇일까 ??
robots.txt란 ?
robots.txt 파일은 웹사이트에서 검색 엔진 크롤러(봇)에게 접근 가능한 영역과 접근 불가능한 영역을 알려주는 파일입니다. 이 파일은 웹사이트의 루트 디렉토리에 위치하며, 크롤러가 불필요한 페이지나 디렉토리에 접근하는 것을 방지하여 웹사이트 과부하를 막고, 검색 엔진 최적화에 도움을 줍니다.
그러면 왜 robot.txt를 일일이 살펴봐야 하는걸까. 아래에서 좀 더 자세히 다뤄보겠다
robot.txt에 나와있는 정보로 크롤링을 해야하는 이유
대표적으로 웹사이트 운영자가 웹서버의 홈디렉토리에 위치한 robots.txt 파일에 포괄적인 크롤링 금지 또는 특정 검색엔진의 크롤링 금지, 특정 디렉토리에 대한 크롤링 금지 등을 표시하였음에도 불구하고, 그 표시를 무시하고 크롤링을 하였다면 이는 사이트 운영자의 의사에 반한 크롤링에 해당하는 것이다.
웹 사이트 관리자는 로봇 배제 표준(Robots Exclusion Standard)을 통해 크롤링의 대상이 되지 않기를 원하는 페이지를 명시할 수 있습니다. 이를 준수하지 않고 크롤링을 진행할 경우, 사이트 관리자로부터 법적 책임을 물을 수 있다. 따라서 크롤링을 수행하기 전에 해당 웹사이트의 'robots.txt' 파일을 확인하고, 명시된 규칙을 준수하는 것이 중요!
실제 리서치를 하며 나온 내용이다. 위에서도 나와있듯이, 결론적으로 데이터 크롤링을 무단으로 진행할 수 없도록, 올리브영과 같은 사이트들이 금지된 범위를 법적으로 명시해놓은 내용이라고 생각해주면 될거같다

제품 판매 링크 명시
Q. 그러면 저희가 구현 예정인, 상품 상세조회에 대한 실제 상품 구매 URL도 긁어오는게 가능한가요 ?
해당 질문에 대한 내용도 추가로 찾아보니, 오히려 크롤링한 상품에 대한 URL을 저희 서비스에서 명시해주는게 법적으로 고의성 및 영업상 이익 침해 의도가 없음을 입증하는 데 도움이 된다라는 내용이 있었다. 결론적으로 우리 서비스에서도 실제 구매 링크를 명시를 해줄 예정이였기에 다행이라는 생각도 들었었다
참고한 자료
[IT·IP법 바로알기92] 불법적인 크롤링, 그 대응방안은?
...
m.ddaily.co.kr
결론
소송이라는게 돈도 돈인데 정신적으로 너무너무 힘들다고 들었어서... 우리가 학생인 신분에서 웹 서비스를 개발하는 만큼 정말 열심히 찾아봤었다 💦 아래에 내가 구현할 데이터 크롤링 플로우를 정리하면서 추후 구현을 해보고, 다른 포스팅으로 찾아오려고 한다
구매 링크 상세조회 페이지 예상 플로우
첫번째로, 먼저 리스트 페이지 접속 및 상품 요소 탐색을 진행한다
- Selenium WebDriver로 상품 리스트 페이지(ex. 베스트셀러 페이지)에 접속
- 각 상품의 상세페이지로 이동할 수 있는 <a> 태그(링크) 요소를 CSS Selector로 찾기


그 다음, 상세페이지별 정보 크롤링을 진행한다
- 추출한 상세페이지 URL을 순차적으로 방문 (위 사진 예시)
- 각 상세페이지에서 상품명, 사진(이미지 URL), 설명, 가격 등 필요한 정보를 CSS Selector로 추출
- 추출할 목록
- 상품명 → .prd-detail-content .prd-detail-title dl dt
- 원가(정상가) → .prd-detail-content .prd-price-info .price
- 할인가(세일가) → */.prd-detail-content .prd-price-info .sale-price
- 상품 이미지 → .prd-detail-wrap .prd-visual-content img
- 브랜드명(브랜드 페이지 링크) → .prd-detail-content .prd-brand-info h3 a[href="brand-page"]
- 배송 정보 → .prd-detail-content .prd-delivery-info
- 추출할 목록
- 객체로 정보 저장 상품명, 원가(정상가), 할인가(세일가), 상품 이미지, 브랜드명, 배송 정보, 태그(best, new) 등등
마지막으로 상품 상세조회시 저장된 객체 반환의 플로우로 진행하기로 했다
