프로젝트 정리/실시간 검색어 프로젝트

#7 Selenium with java

왜 셀레니움을 사용하는가?

 

웹 크롤링 도중 JSOUP라이브러리로는 동적 데이터를 수집할 수 없어서 Selenium을 사용하여 접근하려고 한다.

그렇다면 셀레니움은 무엇인가

1. 셀레니움이란 무엇인가?

https://www.selenium.dev/

 

Selenium

Selenium automates browsers. That's it!

www.selenium.dev

셀레니움 공식사이트에서 나오는 소개글은

Selenium is a suite of tools for automating web browsers.

'웹 브라우저들을 자동화 시키는 도구 모음이다.' 라고 소개하고 있다.

 

https://www.tutorialcup.com/ko/testing/selenium-tutorial/selenium.htm

 

셀레늄이란?

Selenium 소개 Selenium은 웹 애플리케이션 GUI의 효과적인 테스트 자동화를 가능하게 하는 테스트 자동화 도구의 오픈 소스 제품군입니다. 그것은 수

www.tutorialcup.com

 

2. 설치하기

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

 

Getting Started

If you are new to Selenium, we have a few resources that can help you get up to speed right away.

www.selenium.dev

셀레니움의 설치는 세 단계로 나눌 수 있다.

  1. 원하는 프로그래밍 언어에 대한 Selenium 라이브러리 설치
  2. 브라우저 를 자동화 하도록 브라우저 드라이버 설정 (예: Firefox용 GeckoDriver 또는 Chrome용 ChromeDriver)
  3. (선택 사항) 테스트를 확장하려는 경우 Selenium Grid 설정 및 구성

 

우선 라이브러리를 설치해보자.

1. 언어 별 라이브러리 설치하기

stable version

안정화된 버전이 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

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

sites.google.com

 

버전과 운영체제를 확인하고 다운로드 하자

 

셀레니움에서 자바 공식문서를 찾으려 했으나 원하는 예제가 잘 나오지 않거나 오래전 예제가 많다.

 

https://www.guru99.com/first-webdriver-script.html

 

First Selenium Webdriver Script: JAVA Sample Code Example

The tutorial is a Complete Guide to How to Write your First Webdriver script. Examples of Selenium Webdriver Scripts in our JAVA Program.

www.guru99.com

 

이 사이트의 예제를 따라해 보자. 

 

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();
    }
}

예제는 파이어 폭스 드라이버와 해당 사이트를 링크로 걸었지만 나는 크롬과 구글을 변수로 넣고 실행시켜 보았다.

 

잘 동작하는 모습

이제 줌과 네이트의 메인페이지 동적 요소를 스크래핑? 크롤링 해보자.