왜 셀레니움을 사용하는가?
웹 크롤링 도중 JSOUP라이브러리로는 동적 데이터를 수집할 수 없어서 Selenium을 사용하여 접근하려고 한다.
그렇다면 셀레니움은 무엇인가
1. 셀레니움이란 무엇인가?
셀레니움 공식사이트에서 나오는 소개글은
Selenium is a suite of tools for automating web browsers.
'웹 브라우저들을 자동화 시키는 도구 모음이다.' 라고 소개하고 있다.
https://www.tutorialcup.com/ko/testing/selenium-tutorial/selenium.htm
2. 설치하기
https://www.selenium.dev/documentation/getting_started/
셀레니움의 설치는 세 단계로 나눌 수 있다.
- 원하는 프로그래밍 언어에 대한 Selenium 라이브러리 설치
- 브라우저 를 자동화 하도록 브라우저 드라이버 설정 (예: Firefox용 GeckoDriver 또는 Chrome용 ChromeDriver)
- (선택 사항) 테스트를 확장하려는 경우 Selenium Grid 설정 및 구성
우선 라이브러리를 설치해보자.
1. 언어 별 라이브러리 설치하기
안정화된 버전이 3.141.59버전이다 (2021-09-01 기준)
implementation 'org.seleniumhq.selenium:selenium-java:3.141.59'
2. 브라우저 드라이버 다운로드하기
크롬 드라이버는 아래 링크에서 다운로드 받을 수 있다.
https://sites.google.com/a/chromium.org/chromedriver/downloads
셀레니움에서 자바 공식문서를 찾으려 했으나 원하는 예제가 잘 나오지 않거나 오래전 예제가 많다.
https://www.guru99.com/first-webdriver-script.html
이 사이트의 예제를 따라해 보자.
package com.devjun.searchingissue.selenium;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class HelloSelenium {
public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static final String WEB_DRIVER_PATH = "D:\\chromedriver_win32\\chromedriver.exe";
public static void main(String[] args) {
// declaration and instantiation of objects/variables
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
WebDriver driver = new ChromeDriver();
//comment the above 2 lines and uncomment below 2 lines to use Chrome
//System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
//WebDriver driver = new ChromeDriver();
String baseUrl = "https://www.google.com/";
String expectedTitle = "Google";
String actualTitle = "";
// launch Fire fox and direct it to the Base URL
driver.get(baseUrl);
// get the actual value of the title
actualTitle = driver.getTitle();
/*
* compare the actual title of the page with the expected one and print
* the result as "Passed" or "Failed"
*/
if (actualTitle.contentEquals(expectedTitle)){
System.out.println("Test Passed!");
} else {
System.out.println("Test Failed");
}
//close Chrome
driver.close();
}
}
예제는 파이어 폭스 드라이버와 해당 사이트를 링크로 걸었지만 나는 크롬과 구글을 변수로 넣고 실행시켜 보았다.
이제 줌과 네이트의 메인페이지 동적 요소를 스크래핑? 크롤링 해보자.
'프로젝트 정리 > 실시간 검색어 프로젝트' 카테고리의 다른 글
#8 Selenium으로 Nate 크롤링하기 (0) | 2021.09.03 |
---|---|
#6 Spring Security Guide (공식문서 보고 따라하기) (0) | 2021.09.01 |
#5 프로젝트 구상 및 기획 ver.2 (0) | 2021.08.26 |
#4 Crwaling and Robots.txt (0) | 2021.08.26 |
#3 Practice Jsoup (0) | 2021.08.25 |