Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

10,775 views

Published on

2016.04.30

Published in: Software
  • Be the first to comment

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

  1. 1. Selenium을 이용한 Dynamic Site Crawler 만들기 KAIST Graduate School of Culture Technology M.S. Candidate Gyuhyeon Jeon The Q Group
  2. 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. 3. Web Crawling • World Wide Web 상의 정 형/비정형화된 데이터들을 수집해 원하는 형태에 맞게 재정형화하여 저장하는 행 위 • 다른 형태로 정보를 재 가공하여 원 소스가 제공하던 매체와 다른 매체에도 이용하기 쉽게 만듬 (ex. 초기버전의 서울버스) • 온라인 상에 공개는 되었지만 Database 류의 형식으로는 제공 하지 않는 데이터의 수집
  4. 4. Crawling을 위해 알아야 할 것들 • HTML • Document Object Model • Cascading Style Sheet • Xpath • Javascript • HTTP • Ontology • Database
  5. 5. 두 가지 속성으로 본 크롤링의 난이도 사이트가 정적 사이트가 동적 수집하고자 하는 각 요소들에 Id나 class가 지정됨 하 중(또는 하) 수집하고자 하는 각 요소들에 Id나 class 없음 중 상
  6. 6. Crawling 전략 세우기 사이트가 정적인가? (AJAX Call 등이 없는가?) AJAX Call로 들어오는 데이터에 내가 수집 하고자 하는 데이터가 있는가? Html Parser를 사용한다 (Jsoup 등) AJAX Call을 직접 만들어 요청할 수 있는가?HTTP Library를 사용한다 (asynchttpclient, Play-ws 등) ???
  7. 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. 8. Selenium • 브라우저 자동화 툴 • 웹 서비스의 동작 테스트를 자동화하기 위해서 만들어 진 라이브러리 • 다양한 브라우저 지원 (even PhantomJS) • 다양한 언저 지원 (even R) • Open Source! (https://github.com/Sele niumHQ/selenium)
  9. 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. 10. Selenium WebDriver • W3C 표준인 WebDriver API를 사용해 실제로 사용 자들이 사용하는 브라우저 를 가지고 자동화 테스트를 할 수 있게 도와줌 • 브라우저 내 사용자의 다양 한 Event 를 실행하는 것은 물론, Javascript도 조작 가능함
  11. 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. 12. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다
  13. 13. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다
  14. 14. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다
  15. 15. 호랑이를 잡으려면 호랑이 굴에 들어가야 한다 Hell Gate
  16. 16. 하늘이 무너져도 솟아날 구멍은 있다
  17. 17. ChromeDriver Setting
  18. 18. Load Document & Element Manipulation
  19. 19. Javascript Injection
  20. 20. WaitForLoad • Document의 load status 를 체크해 complete 상태가 될 때까지 대기하도록 함
  21. 21. WaitForLoad 응용하기
  22. 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; } }

×