SlideShare a Scribd company logo
1 of 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;
}
}

More Related Content

What's hot

원티드 발표자료 나수현 2018
원티드 발표자료 나수현 2018원티드 발표자료 나수현 2018
원티드 발표자료 나수현 2018Soohyun Na
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서Jeongmin Cha
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 
개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 introSeongyun Byeon
 
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015CODE BLUE
 
QA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQAFest
 
심성환 개발자 포트폴리오
심성환 개발자 포트폴리오심성환 개발자 포트폴리오
심성환 개발자 포트폴리오Seonghwan Shim
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개Wonchang Song
 
Análisis de precios de tu competencia con Screaming Frog #SEOGirona
Análisis de precios de tu competencia con Screaming Frog #SEOGironaAnálisis de precios de tu competencia con Screaming Frog #SEOGirona
Análisis de precios de tu competencia con Screaming Frog #SEOGironaMJ Cachón Yáñez
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?Opennaru, inc.
 
김종욱 포트폴리오
김종욱 포트폴리오김종욱 포트폴리오
김종욱 포트폴리오Jonguk Kim
 
[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기
[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기
[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기OKKY
 
NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다
NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다
NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다Taehyun Kim
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)Eunjeong (Lucy) Park
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Postman tests in jenkins
Postman tests in jenkinsPostman tests in jenkins
Postman tests in jenkinsAlex Galkin
 
Polyglot payloads in practice by avlidienbrunn at HackPra
Polyglot payloads in practice by avlidienbrunn at HackPraPolyglot payloads in practice by avlidienbrunn at HackPra
Polyglot payloads in practice by avlidienbrunn at HackPraMathias Karlsson
 
A Forgotten HTTP Invisibility Cloak
A Forgotten HTTP Invisibility CloakA Forgotten HTTP Invisibility Cloak
A Forgotten HTTP Invisibility CloakSoroush Dalili
 

What's hot (20)

원티드 발표자료 나수현 2018
원티드 발표자료 나수현 2018원티드 발표자료 나수현 2018
원티드 발표자료 나수현 2018
 
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
차정민 (소프트웨어 엔지니어) 이력서 + 경력기술서
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro
 
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
 
QA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профиQA Fest 2019. Андрей Солнцев. Selenide для профи
QA Fest 2019. Андрей Солнцев. Selenide для профи
 
심성환 개발자 포트폴리오
심성환 개발자 포트폴리오심성환 개발자 포트폴리오
심성환 개발자 포트폴리오
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
Análisis de precios de tu competencia con Screaming Frog #SEOGirona
Análisis de precios de tu competencia con Screaming Frog #SEOGironaAnálisis de precios de tu competencia con Screaming Frog #SEOGirona
Análisis de precios de tu competencia con Screaming Frog #SEOGirona
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
 
김종욱 포트폴리오
김종욱 포트폴리오김종욱 포트폴리오
김종욱 포트폴리오
 
[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기
[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기
[OKKYCON] 정진욱 - 테스트하기 쉬운 코드로 개발하기
 
NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다
NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다
NDC 2016 김태현 - 글로벌 동시 퀵 서버패치 이렇게 구축 했다
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
김동건, 갈망의 아궁이
김동건, 갈망의 아궁이김동건, 갈망의 아궁이
김동건, 갈망의 아궁이
 
Postman tests in jenkins
Postman tests in jenkinsPostman tests in jenkins
Postman tests in jenkins
 
Polyglot payloads in practice by avlidienbrunn at HackPra
Polyglot payloads in practice by avlidienbrunn at HackPraPolyglot payloads in practice by avlidienbrunn at HackPra
Polyglot payloads in practice by avlidienbrunn at HackPra
 
SSRF workshop
SSRF workshop SSRF workshop
SSRF workshop
 
A Forgotten HTTP Invisibility Cloak
A Forgotten HTTP Invisibility CloakA Forgotten HTTP Invisibility Cloak
A Forgotten HTTP Invisibility Cloak
 

Viewers also liked

141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
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
 

Viewers also liked (10)

141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
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분이면 웹 서버를 올릴 수 있습니다!
 

Similar to 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
 

Similar to 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; } }