1. 상태 유무
- 상태를 가지는 크롤러 - Stateful
- 상태가 없는 크롤러 - Stateless
상태를 가지는 크롤러의 경우에는 쿠키 송수신 기능이 필요하다(Requests Session, Referer).
2. 자바스크립트 실행 유무
자바스크립트를 실행하는 경우에는 Selenium을 사용하거나, 패턴을 파악해 흉내 내는 방법이 있다.
브라우저 조작 도구인 셀레니움은 일반적인 크롤러에비해 실행 시간이 길고 메모리 소비량이 많다. 따라서 어쩔 수 없는 경우에는 이를 사용해야겠지만, 최대한 피하는 편이 좋다.
헤드리스 브라우저는 일반 웹 브라우저에 비해 메모리 소비량이 적기때문에, 셀레니움을 사용할 때는 헤드리스 브라우저를 사용하는 것이 좋다. 대표적인 헤드리스 브라우저로는 PhantomJS가 있다.
3. 불특정/특정 사이트 대상
특정 사이트만을 대상하는 경우에는 쉽게 크롤러를 만들 수 있다.
하지만 불특성 다수의 사이트를 크롤링하는 경우에는, 모든 웹사이트를 지원할 수 있는 범용성이 필요해 난이도가 있다.
불특정 다수 사이트를 대상으로하는 크롤러가 고려해 봐야할 법한 문제
- 표준 규칙을 어기고 만들어진 웹 사이트
- 자바스크립트를 많이 사용한 웹 페이지
- 속도(병렬 처리를 통한 속도 향상)
- 데이터를 읽고 쓰는 속도
'Crawling' 카테고리의 다른 글
[크롤링/11]Scrapy 병렬 처리 설정 (2) | 2021.03.25 |
---|---|
[크롤링/10]Scrapy로 크롤링 대상 사이트에 피해주지 않는 설정하기 (0) | 2021.03.25 |
[크롤링/08]퍼머링크와 데이터베이스 설계 (0) | 2021.03.25 |
[크롤링/07] 알고 있으면 유용한 조각 지식-01 (0) | 2021.03.23 |
[크롤링/06] 인증이 필요한 페이지 (0) | 2021.03.22 |