[Selenium] Spring boot에서 Selenium으로 크롤링하기.

2022. 1. 30. 17:25Coding/Java SpringBoot

728x90

Selenium 공식 주소

https://www.selenium.dev/

 

Selenium

Selenium automates browsers. That's it!

www.selenium.dev

 

 

WebDriver 다운 주소(사용하는 Chrome과 맞는 버전으로 받아야함.)

https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/

 

 

Gradle에 추가

1
implementation 'org.seleniumhq.selenium:selenium-java:4.0.0'
cs

 

 

크롤링 Code
WebDriverUtil.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import lombok.extern.slf4j.Slf4j;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.concurrent.TimeUnit;
 
@Slf4j
public class WebDriverUtil {
 
    private WebDriver driver;
    public static String WEB_DRIVER_ID = "webdriver.chrome.driver"// Properties 설정
    public static String WEB_DRIVER_PATH = "C:/dev/python/crawling/webdriver/chromedriver.exe"// WebDriver 경로
 
    public WebDriverUtil() {
        chrome();
    }
 
    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);  // 페이지 불러오는 여유시간.
        log.info("++++++++++++++++++++++===================+++++++++++++ selenium : " + driver.getTitle());
 
 
        WebElement searchLabel = driver.findElement(By.id("label-text"));
        log.info("++++++++++++++++++++++===================+++++++++++++ searchLabel : " + searchLabel.getText());
 
        quitDriver();
    }
 
    private void quitDriver() {
        driver.quit(); // webDriver 종료
    }
 
}
cs

 

 

실행 Code

1
2
WebDriverUtil webDriverUtil = new WebDriverUtil();
webDriverUtil.useDriver("https://www.youtube.com/c/youtubekorea/videos");
cs

 


Python환경이 아닌, java의 Spring boot에서 Selenium을 쓸 일이 있어서 찾아보니,
seleninum도 4.0이 나오고 코드들이 중구난방이 많아서 정리.

  • 14줄에 본인이 받은 webDriver의 경로 입력.
  • 24~30줄 실행할 webDriver에 옵션을 주는거 같은데, 퍼온거라 잘 모름^^
    (브라우저를 실제로 띄우지 않고, 백그라운드에서 크롤링 작업하는 옵션 포함)

  • 34,39줄 selenium4.0에서 바뀐 사용법,
    parameter로 시간과 시간의 타입을 받음
  • 43줄 selenium4.0에서 바뀐 사용법,
    .findElementById -> .findElement(By.id("아이디")) 이렇게 바뀜.

실행 Code를 필요한 Controller나 Service쪽에서 사용하면 될듯?

728x90