크롤링&스크래핑

Crawling STEP 3 - 셀레니움을 통해 JavaScript로 선언된 데이터 가져오기

2023. 5. 26. 12:06
728x90

★ JavaScript 구문을 가져오기 

  • JSoup으로는 사용이 불가함.
  • 셀레니움(Selenium)을 통해 가져오기

 

★ 셀레니움(Selenium)

  • 테스트 자동화 툴
  • https://www.selenium.dev/downloads/
 

Downloads

Selenium automates browsers. That's it!

www.selenium.dev

  • 자바 버전 다운로드
  • 압축 해제 후, lib 폴더에 있는 jar파일 lib에 넣기
  • 다 넣어도 됨.

★ ChromeDriver 다운로드

  • 현재 내 버전 확인
  • 도움말 -> Chrome 정보
  • 현재 버전 : 버전 113.0.5672.127
  • https://chromedriver.chromium.org/
 

ChromeDriver - WebDriver for Chrome

WebDriver is an open source tool for automated testing of webapps across many browsers. It provides capabilities for navigating to web pages, user input, JavaScript execution, and more. ChromeDriver is a standalone server that implements the W3C WebDriver

chromedriver.chromium.org

  • win32 버전 다운

  • 사용할 파일 위치 경로에 exe 파일을 위치시키기 (c:/class/dev)

 

■ 테스트 페이지 소스

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>
	<h1 id="title">Java Crawling</h1>
	
	<p class="desc">자바 크롤링 테스트</p>
	<p class="desc">Jsoup 라이브러리 사용</p>
	
	<hr>
	
	<h2>다른 데이터</h2>
	
	<div id = "items"></div>	



<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

	load();
	
	function load() {
		
		const list = ['자바', '오라클', '스프링'];
		
		list.forEach(item=>{
				$('#items').append(`<div class="item">\${item}</div>`);
		});
		
	}
</script>
</body>
</html>

 

■ 크롤링 소스

	try {

        //셀레니움 기초 셋팅
        String webDriverID = "webdriver.chrome.driver";
        String path = "C:\\class\\dev\\chromedriver.exe";

        System.setProperty(webDriverID, path);

        ChromeOptions options = new ChromeOptions();
        options.setCapability("ignoreProtectedModeSettings", true);

        //실제적인 사용

        //브라우저 참조 객체
        WebDriver driver = new ChromeDriver(options);

        String url = "http://localhost:8090/crawling/ex01.do";
        driver.get(url);

        WebElement title = driver.findElement(By.id("title"));
        System.out.println(title.getText());

        List<WebElement> list = driver.findElements(By.className("item"));

        for (WebElement item : list) {
            System.out.println(item.getText());
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  • 실행 결과

 

■ 스크립팅

  • 소스코드
	try {
			
			//셀레니움 기초 셋팅
			String webDriverID = "webdriver.chrome.driver";
			String path = "C:\\class\\dev\\chromedriver.exe";
	      
			System.setProperty(webDriverID, path);
	      
			ChromeOptions options = new ChromeOptions();
			options.setCapability("ignoreProtectedModeSettings", true);
			
			//실제적인 사용
			
			//브라우저 참조 객체
			WebDriver driver = new ChromeDriver(options);
			
			String url = "http://lms1.sist.co.kr/worknet/SLogin.asp";
			driver.get(url);
			
			//아이디, 암호 입력
			WebElement id = driver.findElement(By.id("strLoginID"));
			id.sendKeys("이름");
			
			WebElement pwd = driver.findElement(By.id("strLoginPwd"));
			pwd.sendKeys("비밀번호");
			
			//버튼 클릭
			WebElement btn = driver.findElement(By.cssSelector("#content > div > form > table > tbody > tr > td > div > div.login-form > div.login-btn > input"));
	        btn.click();
	         
	        //딜레이
	        try {
				//driver.wait(3000);
				Thread.sleep(1000);
				
			} catch (Exception e) {
				e.printStackTrace();
			}
	        
	        WebElement period = driver.findElement(By.cssSelector("#content > div > div > div > div.panel-body > form > table > thead > tr:nth-child(5) > td:nth-child(2)"));
			System.out.println("period:" + period.getText());
			
			
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
  • 실행 결과 
    • 해당 사이트에 접속 성공
728x90
저작자표시 비영리 변경금지 (새창열림)

'크롤링&스크래핑' 카테고리의 다른 글

Crawling STEP 2 - 다음 영화페이지 크롤링  (0) 2023.05.26
Crawling STEP 1 - JSOUP 사용  (0) 2023.05.26
'크롤링&스크래핑' 카테고리의 다른 글
  • Crawling STEP 2 - 다음 영화페이지 크롤링
  • Crawling STEP 1 - JSOUP 사용
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • jquery
  • 앱개발자
  • DB
  • JavaScript
  • 웹개발자
  • 정보보안전문가
  • IT개발자
  • 백엔드
  • ajax
  • 자바
  • html
  • css
  • 개발블로그
  • 웹페이지
  • 코딩테스트
  • jsp
  • DBA
  • 알고리즘
  • java
  • 개발자
  • IT자격증
  • 정보처리기사
  • React
  • IT자격증공부
  • 데이터베이스
  • it
  • 프론트엔드
  • 백준
  • 정보처리기사필기
  • 웹개발

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
Crawling STEP 3 - 셀레니움을 통해 JavaScript로 선언된 데이터 가져오기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.