웹 크롤링을 사용하는 이유
전국에 있는 주차장 정보를 DB에 저장하여 주차장 검색 서비스를 구현하고자 한다.
공공 데이터 포털에서 제공하는 주차장 정보 제공 API
를 사용하려고 했으나, 주차장 이름, 주소 등이 공백인 데이터가 많았다.
전국 주차장 정보 표준 데이터
엑셀 데이터는 14,000여개의 주차장 정보를 가지고 있으나, 우리가 목표로 하는 대용량 데이터에 비해서는 적은 데이터였다.
50만~100만 정도의 주차장 데이터를 수집하기 위해 네이버 지도에서 주차장 정보를 크롤링하여 수집하고자 한다.
웹 크롤링 라이브러리
Java
- Jsoup
- HTML 파싱 라이브러리
- HTML 소스코드를 가져와서 원하는 데이터를 추출할 수 있다.
- 네트워크 연결이 필요하지 않으므로 빠르게 작업을 수행할 수 있다.
- 정적인 페이지에 대해서만 적합하다.
- Selenium
- 웹 브라우저 자동화 라이브러리
- 웹페이지를 열고 버튼 클릭, 텍스트 입력 등의 동작을 자동화할 수 있다.
- 동적으로 생성되는 데이터 추출이 가능하다.
- 다양한 브라우저를 지원하여 브라우저별로 테스트를 수행할 때도 사용할 수 있다.
- 네트워크 연결이 필요하므로 Jsoup보다는 느리게 동작할 수 있다.
Python
- Beautiful Soup
- HTML, XML 파싱 라이브러리
- HTML, XML 소스코드를 가져와서 원하는 데이터를 추출할 수 있다.
- 정적인 페이지에 대해서만 적합하다.
- CSS 선택자 및 정규표현식 등을 이용하여 데이터를 추출할 수 있다.
- Scrapy
- 웹 크롤링 프레임워크
- 크롤링, 스크래핑 및 데이터 추출을 자동화할 수 있다.
- 분산 크롤링, 로그인, 자동화 등 다양한 기능을 지원한다.
- 동적으로 생성되는 데이터 추출이 가능하다.
- 복잡한 크롤링 작업을 수행할 때 유용하다.
<aside>
✔️ 네이버 지도는 동적으로 구성된 웹페이지이다. Java를 이용해 크롤링을 하려는데, 동적인 페이지를 크롤링하기 위해서 Selenium이 적합할 것으로 보인다.
</aside>