자바에서 Spring boot 프로젝트를 생성한다.
maven으로 생성했다.
자바에서 selenium을 사용하기 위해 selenium dependency를 추가한다.
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
자신의 chrome 버전에 맞는 드라이버를 설치한다.
크롬창 -> 설정 -> Chrome정보 -> 버전확인
크롬 드라이버 다운로드 페이지
크롬 드라이버 다운로드 페이지에 가서 자신의 크롬버전과 맞는 드라이버를 다운로드한다.
현재 최신버전은 114버전이지만 현재 크롬버전은 116이기에 Test버전을 다운받는다.
(114버전드라이버를 사용해도 작동하긴한다.)
복사한 주소를 URL창에 붙여넣으면 zip이 다운로드 된다.
다운로드한 zip파일을 압축해제한다.
public class Crawler {
public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static final String WEB_DRIVER_PATH = "../chromedriver/chromedriver_win64/chromedriver.exe";
public WebDriver initWebDriver() {
try {
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
} catch (Exception e) {
e.printStackTrace();
}
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--single-process");
options.addArguments("--disable-dev-shm-usage");
return new ChromeDriver(options);
}
public WebDriver search(WebDriver driver){
//get()메소드에 url을 입력하면 해당 페이지로 이동한다.
driver.get("www.naver.com");
// findElement()메소드로 원하는 요소를 찾는다.
// By를 사용하여 선택자를 id,class,xPath등으로 정할 수 있다.
WebElement inputQuery = driver.findElement(By.id("query"));
//sendKeys()메소드를 사용하면 원하는 값을 해당 element에 입력할 수 있다.
//검색, 로그인등에 활용한다.
inputQuery.sendKeys("검색어");
WebElement searchBtn = driver.findElement(By.id("search-btn"));
//click()메소드를 사용하면 element를 클릭할 수 있다.
searchBtn.click();
return driver;
}
public WebDriver getData(WebDriver driver){
WebElemetn div = driver.findElement(By.className("link_tit");
String data = div.getText();
return data
}
}
WEB_DRIVER_ID는 환경변수에 chrome driver를 등록하기 위함이다.
WEB_DRIVER_PATH는 chromedriver가 위치한 경로를 작성한다.
WebDriver를 설정하기 위해 ChromeOption으로 option을 설정한다.
WebDriver와 WebElement를 사용하여 원하는 작업을 할 수 있다.
WebDriver의 findElement()와 By를 사용하여 원하는 WebElement를 찾고
WebElement의 sendKeys(), click(), getText()등의 메소드를 사용하여 작업을 한다.
public class CrawlingService {
@Autowired
private Crawler crawler;
public String Crawling() {
String url = "https://pp.kepco.co.kr/";
log.info("kepcoId = {}, password = {}", kepcoId, password);
WebDriver driver = crawler.initWebDriver();
driver = crawler.search(driver);
data = crawler.getData(driver);
System.out.print(data);
//가상의 크롬창을 닫는다.
driver.close();
//종료한다.
driver.quit();
}
}