프로그램의 효율적인 관리 및 성능 향상
전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
소프트웨어 시험, 통합, 수정 시 용이성 제공
기능의 분리가 가능, 인터페이스가 단순
오류의 범위를 최소화
모듈의 재사용 가능으로 개발과 유지보수가 용이
(참고 : https://vincentgeranium.github.io/study/2019/08/26/module.html)
Jsoup
:HTML 파싱 Java 라이브러리입니다. DOM, CSS 및 jquery와 같은 방법을 사용하여 데이터를 추출하고 조작하는 매우 편리한 API를 제공한다.
출처: https://jinseongsoft.tistory.com/156
Selenium
: selenium은 웹사이트 테스트를 위한 도구로 브라우저 동작을 자동화할 수 있습니다. 셀레니움을 이용하는 웹크롤링 방식은 바로 이점을 적극적으로 활용하는 것입니다. 프로그래밍으로 브라우저 동작을 제어해서 마치 사람이 이용하는 것 같이 웹페이지를 요청하고 응답을 받아올 수 있습니다.
출처 : https://hogni.tistory.com/76
차이점
: 요즘 웹사이트들은 빠른 반응성을 위하여 사용자가 컨텐츠를 서버에 요청했을 때 서버는 데이터만 브라우저에 전송하고 브라우저에서는 이 데이터를 가지고 화면을 렌더링하는 방식을 사용한다. 이러한 방식을 클라이언트 사이드 렌더링(CSR, Client-Side Rendering)이라고 하며 XHR(XML Http Request), AJAX를 이용하여 사용되다가 React.js와 같은 프레임워크들이 생겨나면서 그 영역이 점점 확대되어가고 있다. CSR은 브라우저에서 화면을 그려준다는 동적인 특성 때문에 서버에 데이터를 요청하는 HTTP Request를 사용하면 실제 화면에 그려진 데이터는 수집할 수 없다.
즉, Jsoup은 HTTP Request를 사용하는 라이브러리이기 때문에 React를 사용하는 Twitter의 컨텐츠를 수집할 수 없는 것이며 WebDriver를 이용하는 Selenium은 수집할 수 있다.