SlideShare a Scribd company logo
Web Scraping with Python
Chapter 10. Scraping JavaScript
SweetK
Ryan Jeong
WHAT IS
Selenium & PhantomJS
web site 내의
Javascript 와 소통가능케 하는
Python API 셋트
web site를 개발을 위해,
눈에 보이지 않게 열어서 사용할 수 있는,
가상 웹브라우져
SCRAPING Javascript
with Selenium
연습 1단계 : Let’s using Selenium!
이 사이트에 접속하면,
처음에는

이렇게 보임.
그리고 2초 후,
이렇게 보임.
* 이런 상황에서…

그냥 크롤링을 하면, 1번 html만 가져오게 됨.

그러나 javascript가 실행된 후의 진짜 본문인,

2번 html은 가져오지 못함.
1
2
연습 1단계 : Let’s using Selenium!
결과출력소스
driver = webdriver.PhantomJS()
먼저 이렇게 하는 이유는, PhantomJS와 Selenium을 연결시키는 겁니다.
driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html")
그리고 나서, 이렇게 특정 URL을 접속합니다.
접속을 했으니, 이제는 이 사이트에서 하고 싶은 것을 하면 됩니다.
element = WebDriverWait(driver, 10).until(

EC.presence_of_element_located((By.ID, "loadedButton")))
이것은, javascript가 실행완료될 때까지 기다리다가 10초가 지나도록 결과가 오지 않으면,
예외처리를 하고 출력할 것입니다.
만약 실행이 10초이내로 잘 된다면,
element에 결과를 저장하고 출력하게 합니다.
이 예제는, “loadedButton" 이라는 요소가
javascript의 실행 후, 나타날때 까지 기다렸다가
나타나면, 그때의 html을 기준으로 텍스트를 가져오는 것
을 연습합니다.
연습 2단계 : redirect 페이지도 크롤링하기
이 사이트에 접속하면,
이 사이트로 자동 이동함.
* 이런 상황에서도…

그냥 크롤링을 하면, 1번 html만 가져오게 됨.

그러나 javascript가 실행된 후의 진짜 본문인,

2번 html은 가져오지 못함.
2초후
1
2
연습 2단계 : redirect 페이지도 크롤링하기
결과출력소스
여기서도,
driver = webdriver.PhantomJS()
이렇게 driver 객체를 만든 후,
애쓰고 만드신 waitForLoad 함수에 넣습니다.
그러면,
원하는 결과인 “redirect후의 페이지”를 크롤링 하실 수 있습니다.
waitForLoad 함수는,
PhantomJS에 있는 html을 selenium으로 찾아서,
넣도록 만들어진 함수 입니다.
Thank youhttp://www.sweetk.co.kr

More Related Content

Similar to 10 Scrapping Javascript

Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
Kwangyoun Jung
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs Prerender
Changwan Jun
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
창규 김
 
Slackbot with Python
Slackbot with PythonSlackbot with Python
Slackbot with Python
Joong Hyeon Kim
 
나의 jQuery 실력 향상기
나의 jQuery 실력 향상기나의 jQuery 실력 향상기
나의 jQuery 실력 향상기
정석 양
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
EunYoung Kim
 
Network 초보자를 위한 Netty
Network 초보자를 위한 NettyNetwork 초보자를 위한 Netty
Network 초보자를 위한 Netty
Choulhyouc Lee
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
Seomgi Han
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리
구 봉
 
Electron mainprocess
Electron mainprocessElectron mainprocess
Electron mainprocess
Daehwan Lee
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁
WebFrameworks
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
지수 윤
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
NAVER D2
 
Web_05_ jQuery
Web_05_ jQueryWeb_05_ jQuery
Web_05_ jQuery
team air @ Dimigo
 
HTML5의 web worker
HTML5의 web workerHTML5의 web worker
HTML5의 web worker
Yongho Ji
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Dong Chan Shin
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XpressEngine
 

Similar to 10 Scrapping Javascript (20)

Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs Prerender
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
 
Slackbot with Python
Slackbot with PythonSlackbot with Python
Slackbot with Python
 
나의 jQuery 실력 향상기
나의 jQuery 실력 향상기나의 jQuery 실력 향상기
나의 jQuery 실력 향상기
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
Network 초보자를 위한 Netty
Network 초보자를 위한 NettyNetwork 초보자를 위한 Netty
Network 초보자를 위한 Netty
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리
 
Electron mainprocess
Electron mainprocessElectron mainprocess
Electron mainprocess
 
Python andselenium
Python andseleniumPython andselenium
Python andselenium
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
 
Web_05_ jQuery
Web_05_ jQueryWeb_05_ jQuery
Web_05_ jQuery
 
HTML5의 web worker
HTML5의 web workerHTML5의 web worker
HTML5의 web worker
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 

More from Young Oh Jeong

개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 솔하 발표본개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 솔하 발표본
Young Oh Jeong
 
개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 동혁 발표본개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 동혁 발표본
Young Oh Jeong
 
개혁파교의학 12장 다은 발표본
개혁파교의학 12장 다은 발표본개혁파교의학 12장 다은 발표본
개혁파교의학 12장 다은 발표본
Young Oh Jeong
 
개혁파교의학 12장 예건 발표본
개혁파교의학 12장 예건 발표본개혁파교의학 12장 예건 발표본
개혁파교의학 12장 예건 발표본
Young Oh Jeong
 
About RNN
About RNNAbout RNN
About RNN
Young Oh Jeong
 
About RNN
About RNNAbout RNN
About RNN
Young Oh Jeong
 
Python machine learning Chapter 07 - PART1
Python machine learning Chapter 07 - PART1Python machine learning Chapter 07 - PART1
Python machine learning Chapter 07 - PART1
Young Oh Jeong
 
What is CNN?
What is CNN?What is CNN?
What is CNN?
Young Oh Jeong
 
Python machine learning Chapter 06 - PART1
Python machine learning Chapter 06 - PART1Python machine learning Chapter 06 - PART1
Python machine learning Chapter 06 - PART1
Young Oh Jeong
 
Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2
Young Oh Jeong
 
Python machine learning Chapter 02
Python machine learning Chapter 02Python machine learning Chapter 02
Python machine learning Chapter 02
Young Oh Jeong
 
07 Cleaning Your Dirty Data
07 Cleaning Your Dirty Data07 Cleaning Your Dirty Data
07 Cleaning Your Dirty Data
Young Oh Jeong
 
푸른아카데미, PART→PARTPRIME
푸른아카데미, PART→PARTPRIME푸른아카데미, PART→PARTPRIME
푸른아카데미, PART→PARTPRIME
Young Oh Jeong
 
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
Young Oh Jeong
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone Programming
Young Oh Jeong
 
네델란드개혁교회역사도식
네델란드개혁교회역사도식네델란드개혁교회역사도식
네델란드개혁교회역사도식
Young Oh Jeong
 
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Young Oh Jeong
 
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
Young Oh Jeong
 

More from Young Oh Jeong (18)

개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 솔하 발표본개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 솔하 발표본
 
개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 동혁 발표본개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 동혁 발표본
 
개혁파교의학 12장 다은 발표본
개혁파교의학 12장 다은 발표본개혁파교의학 12장 다은 발표본
개혁파교의학 12장 다은 발표본
 
개혁파교의학 12장 예건 발표본
개혁파교의학 12장 예건 발표본개혁파교의학 12장 예건 발표본
개혁파교의학 12장 예건 발표본
 
About RNN
About RNNAbout RNN
About RNN
 
About RNN
About RNNAbout RNN
About RNN
 
Python machine learning Chapter 07 - PART1
Python machine learning Chapter 07 - PART1Python machine learning Chapter 07 - PART1
Python machine learning Chapter 07 - PART1
 
What is CNN?
What is CNN?What is CNN?
What is CNN?
 
Python machine learning Chapter 06 - PART1
Python machine learning Chapter 06 - PART1Python machine learning Chapter 06 - PART1
Python machine learning Chapter 06 - PART1
 
Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2
 
Python machine learning Chapter 02
Python machine learning Chapter 02Python machine learning Chapter 02
Python machine learning Chapter 02
 
07 Cleaning Your Dirty Data
07 Cleaning Your Dirty Data07 Cleaning Your Dirty Data
07 Cleaning Your Dirty Data
 
푸른아카데미, PART→PARTPRIME
푸른아카데미, PART→PARTPRIME푸른아카데미, PART→PARTPRIME
푸른아카데미, PART→PARTPRIME
 
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone Programming
 
네델란드개혁교회역사도식
네델란드개혁교회역사도식네델란드개혁교회역사도식
네델란드개혁교회역사도식
 
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
 
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
 

10 Scrapping Javascript

  • 1. Web Scraping with Python Chapter 10. Scraping JavaScript SweetK Ryan Jeong
  • 2. WHAT IS Selenium & PhantomJS web site 내의 Javascript 와 소통가능케 하는 Python API 셋트 web site를 개발을 위해, 눈에 보이지 않게 열어서 사용할 수 있는, 가상 웹브라우져
  • 4. 연습 1단계 : Let’s using Selenium! 이 사이트에 접속하면, 처음에는
 이렇게 보임. 그리고 2초 후, 이렇게 보임. * 이런 상황에서…
 그냥 크롤링을 하면, 1번 html만 가져오게 됨.
 그러나 javascript가 실행된 후의 진짜 본문인,
 2번 html은 가져오지 못함. 1 2
  • 5. 연습 1단계 : Let’s using Selenium! 결과출력소스 driver = webdriver.PhantomJS() 먼저 이렇게 하는 이유는, PhantomJS와 Selenium을 연결시키는 겁니다. driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html") 그리고 나서, 이렇게 특정 URL을 접속합니다. 접속을 했으니, 이제는 이 사이트에서 하고 싶은 것을 하면 됩니다. element = WebDriverWait(driver, 10).until(
 EC.presence_of_element_located((By.ID, "loadedButton"))) 이것은, javascript가 실행완료될 때까지 기다리다가 10초가 지나도록 결과가 오지 않으면, 예외처리를 하고 출력할 것입니다. 만약 실행이 10초이내로 잘 된다면, element에 결과를 저장하고 출력하게 합니다. 이 예제는, “loadedButton" 이라는 요소가 javascript의 실행 후, 나타날때 까지 기다렸다가 나타나면, 그때의 html을 기준으로 텍스트를 가져오는 것 을 연습합니다.
  • 6. 연습 2단계 : redirect 페이지도 크롤링하기 이 사이트에 접속하면, 이 사이트로 자동 이동함. * 이런 상황에서도…
 그냥 크롤링을 하면, 1번 html만 가져오게 됨.
 그러나 javascript가 실행된 후의 진짜 본문인,
 2번 html은 가져오지 못함. 2초후 1 2
  • 7. 연습 2단계 : redirect 페이지도 크롤링하기 결과출력소스 여기서도, driver = webdriver.PhantomJS() 이렇게 driver 객체를 만든 후, 애쓰고 만드신 waitForLoad 함수에 넣습니다. 그러면, 원하는 결과인 “redirect후의 페이지”를 크롤링 하실 수 있습니다. waitForLoad 함수는, PhantomJS에 있는 html을 selenium으로 찾아서, 넣도록 만들어진 함수 입니다.