https://codegarden-farmjun.tistory.com/73
[Java] Jsoup을 사용해서 크림(KREAM) 웹 스크래핑하기
Jsoup을 사용하게 된 이유 현재 진행 중인 앱런칭 프로젝트에서 리셀 상품들의 데이터가 필요하게 됐습니다. 팀원들과 회의 결과 데이터의 크기가 가장 거대하고 신뢰가는 데이터들이 존재하는
codegarden-farmjun.tistory.com
이전 글과 내용이 이어지므로, 해당글의 내용을 이해를 돕기 위해 먼저 읽으면 도움이 될 것입니다.
Selenium을 사용하게 된 이유
크림에서 누적 거래 데이터를 스크래핑하기 위해서는 사이트 로그인이 필수였습니다.
Jsoup으로 로그인 후 데이터를 스크래핑하기 위한 코드를 짜보고 싶었지만, 생각보다 잘 구현이 되지 않아 막막했습니다.
그래서 일단 Jsoup을 다음으로 사이트가 로그인을 요구하는 경우, 스크래핑에 유리한 Selenium을 사용해 보기로 했습니다.
셀레늄은 사용자가 웹 사이트를 사용하는 것처럼 사이트를 제어하는 코드를 작성할 수 있다는 장점이 있습니다.
Selenium이란?
셀레늄(Selenium)은 웹 애플리케이션 자동화 및 테스트를 위한 포터블 프레임워크이다. 셀레늄은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공한다. (셀례늄 IDE) C 샤프, 그루비, 자바, 펄, PHP, 파이썬, 루비, 스칼라 등 수많은 유명 프로그래밍 언어들에서 테스트를 작성하기 위한 테스트 도메인 특화 언어(Selenese)를 제공한다. 이 테스트들은 현대의 대부분의 웹 브라우저에서 수행이 가능하다. 셀레늄은 윈도우, 리눅스, macOS 플랫폼에서 디플로이된다. 아파치 2.0 라이선스로 배포되는 오픈 소스 소프트웨어이다. 웹 개발자는 무료로 다운로드, 사용할 수 있다. (출처- 위키백과)
사실 Selenium은 크롤링을 위해 탄생안 프레임워크가 아니라고 해요. 웹 사이트를 개발할 때 사이트가 제대로 작동하는지 확인하기 위해 하나하나 수동으로 동작을 테스트해봐야 하는데 개발자들의 특징이 뭡니까! 귀찮음이 많다는거ㅋㅋ
그래서 이를 자동화하여 테스트할 수 있도록 만든 것이 Selenium이라고합니다.
Web Driver
Selenium을 사용하기 위해서는 웹 드라이브가 필요합니다. 저는 크롬 브라우저를 사용하기 때문에 크롬 드라이버를 설치했습니다.
브라우저 오른쪽 상단의 점 세개 클릭
-> 도움말 클릭
-> Chrome 정보 클릭
그러면 이런 화면을 볼 수 있다. 저 같은 경우는 109 버전입니다.
https://chromedriver.chromium.org/downloads
ChromeDriver - WebDriver for Chrome - Downloads
Current Releases If you are using Chrome version 110, please download ChromeDriver 110.0.5481.30 If you are using Chrome version 109, please download ChromeDriver 109.0.5414.74 If you are using Chrome version 108, please download ChromeDriver 108.0.5359.71
chromedriver.chromium.org
버전을 확인하셨다면 위 사이트에 접속해서 자신의 크롬 버전을 확인해서 맞는 웹 드라이버를 설치하자.
스프링 프로젝트 생성(인텔리제이)
타입은 Gradel-Groovy, JDK는 17, Packagin은 Jar로 했습니다.
Defendency는 추가 없이 생성했습니다.
여기에 아까 다운 받은 크롬 웹 드라이버를 압축 해제 후 드래그해서 넣어줍시다!
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java
그 다음 위의 주소에 들어가셔서 가장 최근 버전인 4.7.2를 클릭
Gradle을 클릭하셔서 텍스트를 복사해줍니다.
다시 프로젝트로 돌아와서
build.gradle에 dependencies에 복사한 텍스트를 넣어주세요!
여기까지하면 Selenium을 사용할 준비는 끝입니다!