웹 크롤링(Web Crawling)
- 웹 크롤링이란 웹 크롤러가 수행하는 작업을 뜻한다.
- 즉, 웹 크롤링은 웹 크롤러가 웹 페이지를 방문하고 분석하는 과정 전체를 포함한 개념이다.
- 크롤링을 통해 수집된 정보는 검색 엔진의 데이터베이스를 구축하거나, 웹 상의 특정 정보를 수집하는데 사용된다.
예를 들어, Google의 검색 엔진은 웹 크롤링을 통해 인터넷 상의 수많은 웹 페이지 정보를 수집, 이 정보를 바탕으로 사용자의 검색 결과를 제공한다.
웹 크롤링은 법적, 윤리적인 문제를 일으킬 수도 있으므로, 크롤링을 수행할 때는 웹 페이지의 'robots.txt' 파일을 확인하고, 해당 사이트의 크롤링 허용 여부를 반드시 확인해야 한다.
웹 크롤러(Web Crawler)
- 웹 크롤러는 인터넷에 있는 웹 페이지를 방문해서 그 내용을 분석하고, 다른 웹 페이지로의 링크를 따라가며 이 과정을 반복하는 프로그램을 뜻한다.
- 이를 통해 웹상의 정보를 수집하고 이를 분류하거나 저장하는 데 사용된다.
- 웹 크롤러는 또한 스파이더, 로봇, 봇 등 다양한 이름으로 불린다.
웹 크롤러의 작동 원리
- 웹 크롤러는 시작 URL(혹은 URL들)로부터 작동을 시작한다.
- 시작 URL에서 웹 페이지를 다운로드하고 페이지 내용을 분석한다.
- 페이지 분석 과정에서 다른 웹 페이지로의 링크를 찾아내면, 그 링크를 큐에 추가한다.
- 큐에서 다음 URL을 가져와 2번 과정을 반복한다.
이 과정을 통해 웹 크롤러는 웹상의 수많은 페이지를 방문하고 정보를 수집한다.
웹 스크래핑(Web Scraping)
- 웹 스크래핑은 웹 사이트들에서 원하는 정보를 추출하는 기술이다.
- 웹 크롤링이 웹 사이트의 정보를 일괄적으로 다운로드하는 반면, 웹 스크래핑은 특정 정보를 선택적으로 추출한다.
- 웹 크롤링이 데이터 수집 과정의 일환인 반면, 웹 스크래핑은 수집된 데이터에서 원하는 정보를 추출하고 구조화하는 과정에 가깝다.
즉, 스크래핑은 크롤링을 통해 수집된 데이터 중에서 필요한 정보를 추출하고 정제하는 과정.
웹 스크래핑은 웹 페이지의 HTML을 읽고 원하는 데이터를 추출하기 위해 사용되는데,
이때 HTML 파싱 라이브러리나 도구가 필요하다.
Jsoup
- Jsoup은 자바 라이브러리로, HTML에서 데이터를 쉽게 추출할 수 있게 해주는 기능을 제공한다.
- DOM, CSS 그리고 jQuery와 같은 메서드를 활용하여 웹 페이지의 데이터를 추출하고 조작하는데 사용된다.
Jsoup의 주요 기능
- HTML 파싱: URL, 파일, 문자열로부터 HTML을 파싱.
- DOM 요소 선택, 추출, 조작: CSS 또는 jQuery와 같은 선택자를 이용하여 DOM 요소를 선택하고, 추출하고, 조작.
- HTML 생성, 출력: 클린(clean)하고 정규화(normalize)된 형태의 HTML을 생성하고 출력.
Jsoup의 장점
- 빠르고 효율적인 HTML 파싱.
- 쉽게 사용할 수 있는 API.
Jsoup의 단점
- JavaScript를 지원하지 않아 동적인 웹 페이지 처리에 한계가 있다.
Selenium
- Selenium은 웹 브라우저 자동화 툴로, 웹 애플리케이션의 테스트를 자동화하는 데 주로 사용된다.
- 다양한 프로그래밍 언어를 지원하며, 다양한 웹 브라우저에서 실행할 수 있다.
Selenium의 주요 기능
- 웹 브라우저 자동화: 웹 브라우저의 작업을 자동화하여 사람이 직접 클릭하거나 입력하는 것을 모방.
- 웹 애플리케이션 테스트: 웹 페이지의 동작을 자동으로 테스트하고 결과를 반환.
- 다양한 언어 지원: Java, C#, Python 등 다양한 언어를 지원하여 다양한 개발 환경에서 사용 가능.
Selenium의 장점
- 다양한 언어 지원으로 다양한 개발 환경에 적용 가능.
- 동적인 웹 페이지에서도 데이터 추출 가능.
Selenium의 단점
- 웹 브라우저를 실제로 실행해야 하므로 자원을 많이 소모한다.
- 설정과 사용이 다소 복잡할 수 있다.
Jsoup과 Selenium의 차이점
- Jsoup은 HTML 파싱에 초점을 두고 있어, 웹 페이지의 데이터를 추출하는 데 특화되어 있다. 반면에, Selenium은 웹 브라우저의 자동화에 중점을 두고 있어 웹 애플리케이션의 테스트에 적합하다.
- Jsoup은 정적인 HTML에서 데이터를 추출하는 반면, Selenium은 동적인 웹 페이지에서도 데이터를 추출할 수 있다. 즉, JavaScript로 생성된 내용을 Selenium은 처리할 수 있지만 Jsoup은 처리할 수 없다.