[Java] 셀레니움 설치하기

반응형

 

 

Java, 셀레니움 설치하기

 

 

 

  셀레니움 이란?

 현재 서비스 중인 웹 사이트의 html 코드를 긁어오기 위한 언어 중 하나이다.

HTML 코드는 Value값이 변하더라도, 정해진 html 안에서 코드의 결과가 발생된다.

 

그래서 해당되는 태그 안의 결괏값을 가져와서 마치 자신의 데이터처럼 가져오는 기술이다.

 

 

일반적으로 허용되는 기술이 아닌만큼, 사용할 때는 다른 서버에 부담되지 않도록 조심해야 한다는 단점 또한 있다.

 

 

 

셀레니움은 제이숲과 비슷하게 사용하지만 최근 FrontEnd의 기술이 발달된 만큼 동적 페이지가 많아지고 그로 인해서 jsoup이 불러오지 못하는 html이 많아지기에 셀레니움을 선호하기도 한다.

 

 

  Selenium 라이브러리 설치하기

 

https://www.selenium.dev/downloads/

 

Downloads

Selenium automates browsers. That's it!

www.selenium.dev

셀레니움을 설치한다. 최근버전 4.4.0 이다. (22.09.27)

 일반 Java를 활용할 경우에는 라이브러리를 Build Path를 해야한다.

만약, Spring을 활용할 경우에는 Gradle 혹은 Maven을 통해서 설치할 수 도 있다.

 

 

implementation 'org.seleniumhq.selenium:selenium-java:4.4.0'

Gradle 사용할 경우에는 다음과 같이 버전을 다운로드한다.

셀레니움을 위한 준비는 Java에서 위와 같이 끝났다.

 

 

 

  크롬 버전.

 셀레니움은 크롬 드라이버를 통해서 실행이 가능하다.

FireFox로도 할 수 있지만, 필자는 크롬으로만 했기 때문에 크롬만 준비해왔다.

 

크롬 드라이버로 설치할 경우 주의할 점은 정식적으로 받은 크롬으로는 사용할 수가 없다.

크롬의 버전이 매우 높기 때문에 크롬 드라이버를 사용할 수 없기 때문이다.

 

 

셀레니움을 사용하기 위해 크롬은 두 사이트에서 준비해야 한다.

 

 

크롬 드라이버 설치

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 106, please download ChromeDriver 106.0.5249.21 If you are using Chrome version 105, please download ChromeDriver 105.0.5195.52 If you are using Chrome version 104, please download ChromeDriver 104.0.5112.79

chromedriver.chromium.org

 

크롬 이전 버전 설치

https://www.slimjet.com/chrome/google-chrome-old-version.php

 

Download older versions of Google Chrome for Windows, Linux and Mac

Google Chrome Older Versions Download (Windows, Linux & Mac) Why use an older version of Google Chrome? Google only provides an online setup file for Google Chrome which installs the latest version of Google Chrome. It happens frequently that a user upgrad

www.slimjet.com

 

크롬드라이버와 크롬버전의 버전은 서로 매칭이 되어야한다.

설치를 할 때, 크롬 드라이버와 크롬 버전은 서로 버전이 일치해야 한다.

그러므로, 무작정 최신 버전을 다운로드해서는 안되고 서로 버전을 맞게 주의하도록 하자.

 

 

32라고 적혀있지만 64bit도 설치 가능하다.

윈도우 사용자일 경우 현재의 Window는 대부분 64bit를 사용하고 있다.

win32는 32bit / 64bit 모두 설치가 가능하다.

 

win32라고 적혀있다고 해서 32bit 윈도우만 설치되는 것은 아니므로, 참고하면 매우 좋다.

 

 

크롬 드라이버는 C드라이브에 매칭 시켰다.

이 부분은 경로만 문제없다면 위치가 어디든지 상관없으므로, 반드시 C드라이브에 넣을 필요는 없다.

 

 

여기까지 준비가 끝났다면, 크롬은 절대 접속하지 말 것.

크롬 접속 시 자동으로 최신 버전으로 업데이트가 되기 때문!

 

 

  JavaCode 작성

import 참고 자료이다.

package kr.soft.bankCard.util;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

@Component
public class Selenium {

    private WebDriver driver;
    public static String WEB_DRIVER_ID = "webdriver.chrome.driver"; // Properties 설정
    public static String WEB_DRIVER_PATH = "C:/chromedriver.exe"; // WebDriver 경로
             
    //생성자
    public Selenium() {
        chrome();
    }
 
    //ChromeDriver 연결
    private void chrome() {
        System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);

        // webDriver 옵션 설정.
        ChromeOptions options = new ChromeOptions();
        options.setHeadless(true);
        options.addArguments("--lang=ko");
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
        options.addArguments("--disable-gpu");
        options.setCapability("ignoreProtectedModeSettings", true);

        // weDriver 생성.
        driver = new ChromeDriver(options);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
    }

    public void useDriver(String url) {
        driver.get(url) ;
        //driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);  // 페이지 불러오는 여유시간.

        //WebElement searchLabel = driver.findElement(By.id("label-text"));

        try {
            Thread.sleep(1000);
            
            //html 콘솔창에 모두 띄우기
            System.out.println(driver.getPageSource());
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        quitDriver();
    }

    private void quitDriver() {
        driver.quit(); // webDriver 종료
    }
}

 

@GetMapping("/test")
public String test() {

    //JsoupFun um = new JsoupFun();

    Selenium sel = new Selenium();

    String url = "주소창 그대로 복붙";

    sel.useDriver(url);



    return "main";
}

셀레니움 실행

본 글은 mapping  /test 실행할 경우, 셀레니움이 동작되도록 설정했다.

셀레니움이 동작에 성공했을 경우, MollangPiu의 Tistory 블로그가 대상이 되어서 코드를 가져올 수 있다.

 

 

 

  마무리

 크롬의 자동 업데이트 매우 귀찮다...

해당 오류는 매우 정상적인 실행 console.log이다.

만약, 셀레니움이 실행이 안 된다면, 실행되는 WebDriver(크롬 드라이버)의 버전과 현재 설치된 크롬의 버전의 일치 여부를 파악할 것.

 

셀레니움은 설정이 매우 귀찮은 만큼, 기본적인 지식을 갖고 있다면 향후 매우 유용할 수 있다.

 

 

반응형

'Language > JAVA' 카테고리의 다른 글

[Java] Java 음수에 대해 알아보자  (0) 2023.07.14
[Java] 상속에 대해 알아보자  (0) 2023.07.08
[Java] FCM Push 전송하기, json Version  (0) 2022.05.12
[Java] Cookie 활용하기  (0) 2022.05.10
[Java] Thread 활용하기  (0) 2022.01.25

댓글

Designed by JB FACTORY