크롤링 잘하는 방법
콘텐츠 수집 → HTTP 통신(백엔드)
스크래핑 → 추출한 HTML 분석(프론트엔드)
- HTTP/HTML 관련 지식 없이 쉽게 크롤링/스크래핑을 하게 해주는 다양한 라이브러리와 프레임워크가 존재
- 그러나 제대로 크롤러를 개발하고 운영하려면 라이브러리/프레임워크의 표준 기능만으로는 부족하거나 예외 상황에 대처할 수 없는 경우가 많음
- 따라서 크롤링을 잘하기위해서는 HTTP통신과 HTML등 웹 기술에대한 지식이 필요
빠른 HTTP/CSS 이해를 위한 무료 강의(칸 아카데미)
HTML/CSS: 웹 페이지 제작이란? | 컴퓨터 프로그래밍 | 컴퓨팅 | Khan Academy
웹페이지를 만들기 위해 HTML과 CSS를 사용하는 방법을 배워 봅시다. HTML은 내용을 둘러싸는데 이용하고 브라우저에게 헤딩, 목록, 표와 같이 페이지의 일부에 관해 알리는 마크업 언어입니다. CSS
ko.khanacademy.org
빠른 JS 이해를 위한 무료 강의(칸 아카데미)
JS 란? : 그리기와 애니메이션 | 컴퓨터 프로그래밍 | 컴퓨팅 | Khan Academy
JavaScript 언어를 사용하는 방법과 ProcessingJS 라이브러리를 사용하여 재미있는 그리기와 애니메이션을 만드는 방법을 배워 봅시다.
ko.khanacademy.org
규칙
- 크롤링 대상 서버에 심한 부하 걸지 말기
- 크롤링 대상 서버가 존재하지 않으면 크롤러는 존재할 수 없음.
- 동시 요청 X
- 요청 간격 최소 1초 이상
- robots.txt에 크롤링 간격이 지정되어 있다면 그 시간에 맞춰서 크롤링 할 것
- 크롤링으로 추출한 콘텐츠의 저작권 지키기
- 검색엔진을 제외(저작권법 28조)하고는 저작권을 꼭 지켜야함
- 크롤러가 수집한 콘텐츠도 저작권을 가지고 있을 수 있음. 따라서 크롤링해서 추출한 콘텐츠도 저작권법을 따라야함.
- 저작권 침해 불법 콘텐츠를 수집하는 크롤러는 불법으로 간주될 수 있음. 저작권자의 요청에 대비해 해당 콘텐츠를 크롤링 결과에서 제외할 수 있게 해야함.
- 크롤링 거부 의사를 밝힌 웹 사이트와 웹 페이지는 크롤링하지 않기
- robots.txt 확인하기
- 크롤러의 User-Agent 헤더에 크롤러와 관련된 설명 페이지 URL을 입력하고 여기에 크롤러의 목적, 크롤링한 정보의 사용 용도, 연락처 등을 적기
▶ 저작권 법 확인하기
저작권법
www.law.go.kr
구글 Search Console을 사용하면 운영하고 있는 웹 사이트에 불법적인 크롤러가 접근하고 있는지, 아닌지 여부를 확인할 수 있다.
robots.txt 소개 및 가이드 | Google 검색 센터 | Google Developers
robots.txt는 크롤러 트래픽을 관리하는 데 사용됩니다. robots.txt 소개 가이드에서 robots.txt 파일의 정의와 사용 방법을 알아보세요.
developers.google.com
크롤링이 어려운 경우
1. 웹 사이트가 규칙을 잘 지키지 않고 만들어졌을 때
- HTTP 요청에 대해 적절한 응답 헤더와 상태 코드를 제공하지 못하는 경우
- 구조가 잘못된 HTML 페이지와 meta 태그를 가지고 있는 경우
자바스크립트 검색엔진 최적화의 기본사항 이해하기 | Google 검색 센터 | Google Developers
자바스크립트 문제로 인해 페이지 또는 일부 콘텐츠가 Google 검색에 표시되지 않는다고 의심하나요? 문제 해결 가이드를 참고하여 자바스크립트 관련 문제를 해결하는 방법을 알아보세요. 자바
developers.google.com
위와 같은 규칙을 지키지 않은 경우 등 다양한 경우 크롤링이 힘들어진다. 전문은 링크 참고.
2. 크롤링하는 웹 사이트의 양이 많은 경우
- 크롤러의 요청 간격을 짧게, 병렬적으로 크롤러 실행 → 시간 단축 → 그러나 크롤링 대상에 피해를 줄 수 있음
- 따라서 효율적인 크롤링이 필요
3. JS/Ajax
- 동적인 HTML 생성 → 단순한 방법으로는 크롤링 불가
- Selenium 등 웹 드라이버 등을 사용해서 크롤링 가능
셀레니움 관련 정보는 위키피디아를 보면 자세히 나와있다.
Selenium (software) - Wikipedia
From Wikipedia, the free encyclopedia Jump to navigation Jump to search Testing framework for web applications This article is about the software testing framework. For the chemical element, see Selenium. Selenium is a portable framework for testing web ap
en.wikipedia.org
그러나 셀레니움과 같은 웹 드라이버를 사용하면 크롤러가 매우 무거워진다(실제로 웹을 사람이 사용하는 것처럼 동작시킴). 그러니 사용을 최소화하는 것이 좋다.
웹 드라이버는 실제 브라우저를 조작하는 도구다.
<웹 드라이버란?>
- Selenium은 원래 웹 애플리케이션 테스트 도구
- WebDriver란 실제 브라우저의 조작을 자동화하기 위한 라이브러리를 통합한 것
- WebDriver를 사용해 크롤러를 만들면 진짜 웹 브라우저를 사용하는 것이므로 자바스크립트를 돌릴 수 있다 → 자바스크립트로 동적 생성되는 HTML을 추출할 수 있다.
<웹 드라이버 사용 시 장, 단점>
장점:
- 버튼 또는 링크를 클릭하는 이벤트 처리도 모두 프로그래밍으로 조작 가능 → 사람이 실제 브라우저를 사용하는 상태 재현 가능
단점:
- 실제로 브라우저를 실행하므로 머신 리소스를 많이 사용
- 조작 시점을 정확하게 맞출 수 있게 정밀한 프로그래밍이 필요
- 동작이 불안정
따라서 최후의 수단으로 사용하는 것이 좋다.
'Crawling' 카테고리의 다른 글
[크롤링/06] 인증이 필요한 페이지 (0) | 2021.03.22 |
---|---|
[크롤링/05]효율적인 크롤링 하는 방법 (0) | 2021.03.22 |
[크롤링/04] HTTP 기본 총 정리 (0) | 2021.03.22 |
[크롤링/03] 라이브러리/프레임워크 (0) | 2021.03.22 |
[크롤링/01] 크롤러의 개념과 동작 (0) | 2021.03.22 |