본문 바로가기
교육/Server

JDBC 개발자 수업 85일차 - 크롤링(crawling) - 셀레니움, 웹 자동화 프로그램

by yhyuk 2021. 7. 28.
728x90
반응형

셀레니움(Selenium)


셀레니움(Selenium)

- 웹 응용 프로그램(웹 사이트)에서 자동화 프로그램을 만들 수 있다.

- 사람 대신에 프로그램이 사람처럼 웹 사이트에 방문해서 여러가지 행동(테스트)를 하는 프로그램

- 크롤링 작업이 가능하다.

 

[ Jsoup 사용방식 ]

- 인증이 불필요한 사이트만 사용 가능

- 인증이 필요한 사이트에서는 사용 불가능

- JavaScript 실행이 필요한 페이지에서는 사용이 불가능(Ajax가 대부분을 차지한다.) 

 

[ 준비 작업 ]

- 크롬 웹 드라이버 설치: https://chromedriver.chromium.org/downloads (꼭 자신의 크롬 버전에 맡게 설치할 것)

- 셀레니움 Java 버전 설치: https://www.selenium.dev/downloads/

- jsoup 설치: https://jsoup.org/download

- 크롬 웹 드라이버와 셀레니움 Java버전은 기억하기 쉬운 폴더에 따로 webdriver로 저장한다.

- 셀레니움과 jsoup의 jar파일은 해당 프로젝트 lib 폴더에 저장시켜 Build Path 한다.

 

[ 예제 ]

- 특정 사이트 url은 기재 안하겠습니다.

- 상품명과 가격 가져오기

String webDriverID = "webdriver.chrome.driver";

// 크롬 웹 드라이버 불러오기
String path = "D:\\webdriver\\chromedriver.exe";
		
System.setProperty(webDriverID, path);
		
ChromeOptions options = new ChromeOptions();
options.setCapability("ignoreProtectedModeSettings", true);
		
WebDriver driver = new ChromeDriver(options);
		
String url = "사이트 주소";
		
driver.get(url);

// 크롤링할 키워드의 선택자 찾기
List<WebElement> list = driver.findElements(By.className("menu_box"));

// name, price 키워드의 선택자 찾기
for (WebElement item : list) {
	String name = item.findElement(By.tagName("strong")).getText();
	String price = item.findElement(By.className("price")).getText();
	System.out.println(name + "," + price);
}

 

- 결과 ( 상품명, 가격 콘솔화면에 출력된 모습)


MEMO>

# 오늘 크롤링 수업 두번째로 셀리니움에 대해서 배웠는데 사용하기가 비록 어렵진 않지만 실행 후 동작이 버벅거리면서 느린걸 확인할 수 있었다.

# 셀리니움을 잘 이용하면 웹 페이지에 자동적으로 로그인하여 지정(예약)해둔 행동을 자동적으로 수행하게 할 수 있다는걸 깨달았다.

# 셀레니움을 이용해서 예제를 많이 했는데, 블로그에 정리글 올릴떄는 특정 웹사이트를 올릴 수가 없어 오늘은 짧게 마친다.

# 웹 프로젝트 ㄱㄱ 
728x90
반응형

댓글