헬린코린이

Selenium 본문

Programming/크롤링

Selenium

HCD 2022. 12. 16. 20:50

 

Selenium은 웹 애플리케이션을 위한 테스팅 프레임워크입니다.

자동화 테스트를 위해 여러 가지 기능을 지원합니다. 다양한 언어에서도 사용이 가능합니다.

Beautiful Soap는 웹사이트에서 버튼을 클릭해야 얻을 수 있는 데이터라던가, Javascript에 조건이 충족되어야만 얻을 수 있는 데이터에

접근하는 것에 한계가 있습니다.

그래서, 직접적으로 웹 사이트에 접근할 수 있게 해주는 Selenium을 사용해야 합니다. 새로운 환경에서 웹 브라우저를 대신해 줄

Web Driver가 필요합니다 Web Driver는 Selenium이 사용할 웹 브라우저이고, Selenium으로 자동화하여 웹 사이트를 탐험하면 됩니다.!

Chrome에서 사용하려면 크롬 드라이브도 설치해야 하는데 자신이 쓰고 있는 크롬 하고 맞는 버전을 설치하면 된다.

package model;

import java.util.ArrayList;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class Test01 {
	public static final String WEB_DRIVER_ID = "webdriver.chrome.driver"; //드라이브ID
	public static final String WEB_DRIVER_PATH = "/Users/sonminseong/Downloads/chromedriver"; //드라이브 경로.
	
	public static void main(String[] args) {
		System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
		
		  WebDriver driver = new ChromeDriver();
	        // 접속할 url
	        String base_url = "https://www.naver.com";
	        try{
	            // 접속
	            driver.get(base_url);
	            // 페이지로 들어갑니다.
				//System.out.println(driver.getPageSource());
	            // 태그중에 첫번째 찾은거
	            WebElement webElement = driver.findElement(By.name("query"));
	            // 키를 체크
	            webElement.sendKeys("역삼동 날씨");
	            // 데이터 보내기 (수행)
	            webElement.submit();
	            
	            WebElement el2=driver.findElement(By.xpath("//*[@id=\"main_pack\"]/section[1]/div[1]/div[2]/div[5]/div[1]/div/div[2]/ul"));
	            List<WebElement> list = new ArrayList<>(el2.findElements(By.className("week_item"))); //ul li
	            	for(int i=0; i<list.size(); i++) {
	            		System.out.println(list.get(i).getText());
	            		System.out.println();
	            	}
	        } catch (Exception e){
	            e.printStackTrace();
	        }
		
		
	}
}

Jsoup과 다르게 Selenium은 문법도 아예 달라서 공부하는데 다소 어려움이 있었다.

가장 기본적인 예제이다 근데 나에겐 이것마저도 신기했다. 뭔가 컴퓨터를 내가 제어하고 있다는 생각에...

Comments