SlideShare uma empresa Scribd logo
1 de 22
Selenium을 이용한
Dynamic Site Crawler 만들기
KAIST Graduate School of Culture Technology
M.S. Candidate
Gyuhyeon Jeon
The Q Group
Crawler
• Crawl[Verb] 1
– 기다
– 기어가다
• Web Crawler [C. Noun] 2
– an Internet bot which
systematically browses the
World Wide Web, typically
for the purpose of Web
indexing.
Web Crawling
• World Wide Web 상의 정
형/비정형화된 데이터들을
수집해 원하는 형태에 맞게
재정형화하여 저장하는 행
위
• 다른 형태로 정보를 재 가공하여
원 소스가 제공하던 매체와 다른
매체에도 이용하기 쉽게 만듬
(ex. 초기버전의 서울버스)
• 온라인 상에 공개는 되었지만
Database 류의 형식으로는 제공
하지 않는 데이터의 수집
Crawling을 위해 알아야 할 것들
• HTML
• Document Object Model
• Cascading Style Sheet
• Xpath
• Javascript
• HTTP
• Ontology
• Database
두 가지 속성으로 본 크롤링의 난이도
사이트가 정적 사이트가 동적
수집하고자 하는
각 요소들에
Id나 class가 지정됨
하 중(또는 하)
수집하고자 하는
각 요소들에
Id나 class 없음
중 상
Crawling 전략 세우기
사이트가 정적인가?
(AJAX Call 등이 없는가?)
AJAX Call로 들어오는
데이터에 내가 수집
하고자 하는 데이터가
있는가?
Html Parser를 사용한다
(Jsoup 등)
AJAX Call을 직접 만들어
요청할 수 있는가?HTTP Library를
사용한다
(asynchttpclient,
Play-ws 등)
???
Selenium
• Selenium automates
browsers. That's it! What
you do with that power is
entirely up to you.
Primarily, it is for
automating web
applications for testing
purposes, but is certainly
not limited to just that.
Boring web-based
administration tasks can
(and should!) also be
automated as well. 3
Selenium
• 브라우저 자동화 툴
• 웹 서비스의 동작 테스트를
자동화하기 위해서 만들어
진 라이브러리
• 다양한 브라우저 지원
(even PhantomJS)
• 다양한 언저 지원 (even R)
• Open Source!
(https://github.com/Sele
niumHQ/selenium)
Selenium WebDriver
• Driving a browser
natively as a user
would either locally or on
a remote machine using
the Selenium Server it
marks a leap forward in
terms of browser
automation. 4
Selenium WebDriver
• W3C 표준인 WebDriver
API를 사용해 실제로 사용
자들이 사용하는 브라우저
를 가지고 자동화 테스트를
할 수 있게 도와줌
• 브라우저 내 사용자의 다양
한 Event 를 실행하는 것은
물론, Javascript도 조작
가능함
Selenium과 Chrome Driver를 이용해 크롤링 하기
• 무슨 언어를 쓸 것인지는 자유로운 편
• JAVA 기준으로 진행
• Selenium : http://selenium-
release.storage.googleapis.com/2.53/selenium-java-
2.53.0.zip or Package Manager 사용
• ChromeDriver :
https://sites.google.com/a/chromium.org/chromedriv
er/
호랑이를 잡으려면 호랑이 굴에 들어가야 한다
호랑이를 잡으려면 호랑이 굴에 들어가야 한다
호랑이를 잡으려면 호랑이 굴에 들어가야 한다
호랑이를 잡으려면 호랑이 굴에 들어가야 한다
Hell Gate
하늘이 무너져도 솟아날 구멍은 있다
ChromeDriver Setting
Load Document & Element Manipulation
Javascript Injection
WaitForLoad
• Document의 load status 를 체크해
complete 상태가 될 때까지 대기하도록
함
WaitForLoad 응용하기
WaitForLoad 응용하기
Object divObj = ((JavascriptExecutor) driver).executeScript("return
document.getElementById('UbiDownloadDiv')");
if(divObj == null) {
driver.findElement(By.cssSelector("#UbiToolbarButton_Save")).click();
return false;
} else {
Object req = ((JavascriptExecutor) driver).executeScript("return
document.getElementById("UbiDownloadDiv").getAttribute("style").in
dexOf("display: none;")");
if (req != null) {
return !req.equals("-1");
} else {
return false;
}
}

Mais conteúdo relacionado

Mais procurados

마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) Amazon Web Services Korea
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Gridnirvdrum
 
심성환 개발자 포트폴리오
심성환 개발자 포트폴리오심성환 개발자 포트폴리오
심성환 개발자 포트폴리오Seonghwan Shim
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략SangIn Choung
 
Test Automation and Selenium
Test Automation and SeleniumTest Automation and Selenium
Test Automation and SeleniumKarapet Sarkisyan
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
ATLAS Automation POC
ATLAS Automation POCATLAS Automation POC
ATLAS Automation POCaakashmc
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)Brian Hong
 
Automation - web testing with selenium
Automation - web testing with seleniumAutomation - web testing with selenium
Automation - web testing with seleniumTzirla Rozental
 
Web API authentication and authorization
Web API authentication and authorization Web API authentication and authorization
Web API authentication and authorization Chalermpon Areepong
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서Jeongmin Cha
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)Seung-June Lee
 
Introduction to Selenium grid
Introduction to Selenium gridIntroduction to Selenium grid
Introduction to Selenium gridKnoldus Inc.
 
Selenium - Introduction
Selenium - IntroductionSelenium - Introduction
Selenium - IntroductionAmr E. Mohamed
 
Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014JWORKS powered by Ordina
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 

Mais procurados (20)

마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
 
심성환 개발자 포트폴리오
심성환 개발자 포트폴리오심성환 개발자 포트폴리오
심성환 개발자 포트폴리오
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
Test Automation and Selenium
Test Automation and SeleniumTest Automation and Selenium
Test Automation and Selenium
 
QSpiders - Automation using Selenium
QSpiders - Automation using SeleniumQSpiders - Automation using Selenium
QSpiders - Automation using Selenium
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
ATLAS Automation POC
ATLAS Automation POCATLAS Automation POC
ATLAS Automation POC
 
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
AWS와 함께 한 쿠키런 서버 Re-architecting 사례 (Gaming on AWS)
 
Automation - web testing with selenium
Automation - web testing with seleniumAutomation - web testing with selenium
Automation - web testing with selenium
 
Web API authentication and authorization
Web API authentication and authorization Web API authentication and authorization
Web API authentication and authorization
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)
 
Introduction to Selenium grid
Introduction to Selenium gridIntroduction to Selenium grid
Introduction to Selenium grid
 
Selenium WebDriver training
Selenium WebDriver trainingSelenium WebDriver training
Selenium WebDriver training
 
Selenium - Introduction
Selenium - IntroductionSelenium - Introduction
Selenium - Introduction
 
Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014Documenting your REST API with Swagger - JOIN 2014
Documenting your REST API with Swagger - JOIN 2014
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 

Destaque

141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)Eunjeong (Lucy) Park
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑neuroassociates
 
웹크롤러 조사
웹크롤러 조사웹크롤러 조사
웹크롤러 조사rupert kim
 
Web Crawler 고군분투기
Web Crawler 고군분투기Web Crawler 고군분투기
Web Crawler 고군분투기richellin
 
6장 지능형 웹 크롤링
6장 지능형 웹 크롤링6장 지능형 웹 크롤링
6장 지능형 웹 크롤링Chanil Kim
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼Cheol Kang
 
Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)Jeong-gyu Kim
 
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁에디티지(Editage Korea)
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 

Destaque (11)

141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑
 
웹크롤러 조사
웹크롤러 조사웹크롤러 조사
웹크롤러 조사
 
Web Crawler 고군분투기
Web Crawler 고군분투기Web Crawler 고군분투기
Web Crawler 고군분투기
 
6장 지능형 웹 크롤링
6장 지능형 웹 크롤링6장 지능형 웹 크롤링
6장 지능형 웹 크롤링
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
 
Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)
 
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 

Semelhante a Selenium을 이용한 동적 사이트 크롤러 만들기

Selenium 에 대해서 알아보기
Selenium 에 대해서 알아보기Selenium 에 대해서 알아보기
Selenium 에 대해서 알아보기Ji Lee
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초Gihyo Joshua Jang
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지Yoonwhan Lee
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향ssuser0e53c8
 
my activities before getting a job
my activities before getting a jobmy activities before getting a job
my activities before getting a jobDeo Kim
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료Hyojin Song
 
Clojure HTTP API 서버 구현을 위한 라이브러리
Clojure HTTP API 서버 구현을 위한 라이브러리Clojure HTTP API 서버 구현을 위한 라이브러리
Clojure HTTP API 서버 구현을 위한 라이브러리Eunmin Kim
 
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdfSangHoon Han
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개태준 문
 
엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례욱래 김
 
Front-end Development with Ruby on Rails
Front-end Development with Ruby on RailsFront-end Development with Ruby on Rails
Front-end Development with Ruby on Rails추근 문
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
 

Semelhante a Selenium을 이용한 동적 사이트 크롤러 만들기 (20)

Selenium 에 대해서 알아보기
Selenium 에 대해서 알아보기Selenium 에 대해서 알아보기
Selenium 에 대해서 알아보기
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향
 
my activities before getting a job
my activities before getting a jobmy activities before getting a job
my activities before getting a job
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료CSS Round Display KIG 발표자료
CSS Round Display KIG 발표자료
 
Clojure HTTP API 서버 구현을 위한 라이브러리
Clojure HTTP API 서버 구현을 위한 라이브러리Clojure HTTP API 서버 구현을 위한 라이브러리
Clojure HTTP API 서버 구현을 위한 라이브러리
 
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
나는 웹 크리에이터다! 그리고... 최근 웹 핫이슈!.pdf
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
 
엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례엔터프라이즈 웹 동향 및 적용사례
엔터프라이즈 웹 동향 및 적용사례
 
Front-end Development with Ruby on Rails
Front-end Development with Ruby on RailsFront-end Development with Ruby on Rails
Front-end Development with Ruby on Rails
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
okspring3x
okspring3xokspring3x
okspring3x
 

Selenium을 이용한 동적 사이트 크롤러 만들기

  • 1. Selenium을 이용한 Dynamic Site Crawler 만들기 KAIST Graduate School of Culture Technology M.S. Candidate Gyuhyeon Jeon The Q Group
  • 2. Crawler • Crawl[Verb] 1 – 기다 – 기어가다 • Web Crawler [C. Noun] 2 – an Internet bot which systematically browses the World Wide Web, typically for the purpose of Web indexing.
  • 3. Web Crawling • World Wide Web 상의 정 형/비정형화된 데이터들을 수집해 원하는 형태에 맞게 재정형화하여 저장하는 행 위 • 다른 형태로 정보를 재 가공하여 원 소스가 제공하던 매체와 다른 매체에도 이용하기 쉽게 만듬 (ex. 초기버전의 서울버스) • 온라인 상에 공개는 되었지만 Database 류의 형식으로는 제공 하지 않는 데이터의 수집
  • 4. Crawling을 위해 알아야 할 것들 • HTML • Document Object Model • Cascading Style Sheet • Xpath • Javascript • HTTP • Ontology • Database
  • 5. 두 가지 속성으로 본 크롤링의 난이도 사이트가 정적 사이트가 동적 수집하고자 하는 각 요소들에 Id나 class가 지정됨 하 중(또는 하) 수집하고자 하는 각 요소들에 Id나 class 없음 중 상
  • 6. Crawling 전략 세우기 사이트가 정적인가? (AJAX Call 등이 없는가?) AJAX Call로 들어오는 데이터에 내가 수집 하고자 하는 데이터가 있는가? Html Parser를 사용한다 (Jsoup 등) AJAX Call을 직접 만들어 요청할 수 있는가?HTTP Library를 사용한다 (asynchttpclient, Play-ws 등) ???
  • 7. Selenium • Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well. 3
  • 8. Selenium • 브라우저 자동화 툴 • 웹 서비스의 동작 테스트를 자동화하기 위해서 만들어 진 라이브러리 • 다양한 브라우저 지원 (even PhantomJS) • 다양한 언저 지원 (even R) • Open Source! (https://github.com/Sele niumHQ/selenium)
  • 9. Selenium WebDriver • Driving a browser natively as a user would either locally or on a remote machine using the Selenium Server it marks a leap forward in terms of browser automation. 4
  • 10. Selenium WebDriver • W3C 표준인 WebDriver API를 사용해 실제로 사용 자들이 사용하는 브라우저 를 가지고 자동화 테스트를 할 수 있게 도와줌 • 브라우저 내 사용자의 다양 한 Event 를 실행하는 것은 물론, Javascript도 조작 가능함
  • 11. Selenium과 Chrome Driver를 이용해 크롤링 하기 • 무슨 언어를 쓸 것인지는 자유로운 편 • JAVA 기준으로 진행 • Selenium : http://selenium- release.storage.googleapis.com/2.53/selenium-java- 2.53.0.zip or Package Manager 사용 • ChromeDriver : https://sites.google.com/a/chromium.org/chromedriv er/
  • 12. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다
  • 13. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다
  • 14. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다
  • 15. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다 Hell Gate
  • 18. Load Document & Element Manipulation
  • 20. WaitForLoad • Document의 load status 를 체크해 complete 상태가 될 때까지 대기하도록 함
  • 22. WaitForLoad 응용하기 Object divObj = ((JavascriptExecutor) driver).executeScript("return document.getElementById('UbiDownloadDiv')"); if(divObj == null) { driver.findElement(By.cssSelector("#UbiToolbarButton_Save")).click(); return false; } else { Object req = ((JavascriptExecutor) driver).executeScript("return document.getElementById("UbiDownloadDiv").getAttribute("style").in dexOf("display: none;")"); if (req != null) { return !req.equals("-1"); } else { return false; } }