SlideShare a Scribd company logo
1 of 60
Download to read offline
웹 크롤링 좀 더 잘하기
2018. 10. 19
2018 데이터야 놀자
University of seoil
Computer electronic
Wangwon Lee
College
Major
Name
Contents
 발표자 소개
 이런 이야기를 하고 싶어요!
 웹 크롤링 개요
 기본적인 웹 크롤링
 동적 페이지 개요
 동적 페이지 크롤링
 마무리
2018 데이터야 놀자
2018 데이터야 놀자
발표자 소개 - 이왕원
 전자부품연구원 인공지능연구센터 위촉연구원
 서일대학교 소프트웨어 공학과 재학 중
 실시간 데이터 수집 프로젝트인 KoShort 컨트리뷰터
 아직 많이 부족합니다. 여러분께 많이 배우고 싶어요!
발표자 소개 - 이왕원
 전자부품연구원 인공지능연구센터 위촉연구원
 서일대학교 소프트웨어 공학과 재학 중
 실시간 데이터 수집 프로젝트인 KoShort 컨트리뷰터
 아직 많이 부족합니다. 여러분께 많이 배우고 싶어요!
웹 크롤링은 자료 찾기가 너무 힘들어서
제가 먼저 공유하고자 이렇게 발표하게 되었어요.
이걸 계기로 웹크롤링도 많은 정보 공유가 있었으면 해요. 
2018 데이터야 놀자
2018 데이터야 놀자
이런 이야기를 하고 싶어요!
 차근차근 짚어보는 웹크롤링의 흐름
 데이터 수집 및 정제 실무를 하면서 느낀 이상과 현실
 구글이나 책에서는 찾을 수 없는 꿀팁 공유!
 실시간 데이터 수집 오픈소스 Koshort 홍보
2018 데이터야 놀자
이런 이야기를 하고 싶어요!
페이지 측에서
제공하는 API가
있는가?
성능보다
생산성이 우선읶가?
웹드라이버를
사용하지 않는 것만으로
해결 가능한가?
- Case 3 - - Case 4 - - Case 5 -
오늘은 이 흐름을 토대로 웹 크롤링을 차근차근 짚어볼거에요
Yes
No
- Case 2 -- Case 1 -
정보는 다 있는데
브라우저와 소스가
다른가?
페이지를 가져왔을 때
모든 정보가 다
있는가?
No
No
No
No
Yes
Yes
Yes
Yes
정적 페이지 동적 페이지
2018 데이터야 놀자
웹 크롤링 개요
흔한 웹 크롤러의 흐름.jpg
2018 데이터야 놀자
웹 크롤링 개요
HTTP에는, GET과 POST와 같은 메소드가 있는데
2018 데이터야 놀자
웹 크롤링 개요
GET은 가져오는 동작, POST는 수행하는 동작
을 위해 설계되었어요.
2018 데이터야 놀자
웹 크롤링 개요
우리가 쓰는 웹 브라우저라는 친구들은
2018 데이터야 놀자
웹 크롤링 개요
HTML 소스를 해석해서 웹 페이지를 그려주는 역할을 해요
표시된 화면 HTML 소스
2018 데이터야 놀자
웹 크롤링 개요
따라서 브라우저 주소 창에 주소를 입력하고 엔터를 치는 것은
+
2018 데이터야 놀자
웹 크롤링 개요
주소에 할당된 웹 서버로 GET 요청을 보내서
웹 페이지를 가져오는 동작이에요
2018 데이터야 놀자
웹 크롤링 개요
음… Request 모듈로
대상 사이트에 get 요청을 해서
HTML 소스를 받아오고,
BeautifulSoup로 원하는 부붂만
파싱해서 쓰면 되겠지…?
통상적인 웹 크롤러 또한 같은 원리로,
GET 메소드를 통해 웹 페이지를 가져와서,
원하는 부붂만 뽑아 쓰는 개념이에요.
웹 크롤링 개요
음… Request 모듈로
대상 사이트에 get 요청을 해서
HTML 소스를 받아오고,
BeautifulSoup로 원하는 부붂만
파싱해서 쓰면 되겠지…?
통상적인 웹 크롤러 또한 같은 원리로,
GET 메소드를 통해 웹 페이지를 가져와서,
원하는 부붂만 뽑아 쓰는 개념이에요.
이제 실제 사례를 통해 한 번 알아볼게요!~
2018 데이터야 놀자
2018 데이터야 놀자
기본적인 웹 크롤링
- Case 1 -
페이지를 받아오면 정보가 그대로 있는 경우
네이버 인기검색어
2018 데이터야 놀자
기본적인 웹 크롤링
- Case 1 -
페이지를 받아오면 정보가 그대로 있는 경우
네이버 인기검색어
HTML 태그와 그에 따른 속성(class, id 등)을 토대로
필요한 정보만 파싱해서 추출.
2018 데이터야 놀자
기본적인 웹 크롤링
유튜브 실시간 인기 동영상
- Case 2 -
정보는 다 있는데, 브라우저 상에서와 내가 받은 소스가 다른 경우
- Case 2 -
정보는 다 있는데, 브라우저 상에서와 내가 받은 소스가 다른 경우
2018 데이터야 놀자
기본적인 웹 크롤링
유튜브 실시간 인기 동영상
당황하지 말고, user-agent를 변경해보자!
(보통 ‘i-explorer’가 디폴트인 경우가 많음)
2018 데이터야 놀자
기본적인 웹 크롤링
- Case ? -
내가 받은 페이지에서는 정보가 일부만 있거나 아예 앆보이는 경우
- Vogue Korea -
- Google Trend -
- Reddit -
- Facebook -
기본적인 웹 크롤링
- Case ? -
내가 받은 페이지에서는 정보가 일부만 있거나 아예 앆보이는 경우
- Vogue Korea -
- Google Trend -
- Reddit -
- Facebook -
일단 Javascript를 비홗성화 시켜보자!
2018 데이터야 놀자
2018 데이터야 놀자
기본적인 웹 크롤링
만약 크롬 개발자 도구에서 자바스크립트를 비홗성화 했을 때
웹브라우저 상에서도 동일한 증상이 보인다면?
F5
구글 트렌드
2018 데이터야 놀자
기본적인 웹 크롤링
만약 크롬 개발자 도구에서 자바스크립트를 비홗성화 했을 때
웹브라우저 상에서도 동일한 증상이 보인다면?
F5
구글 트렌드
이건 100% 동적 페이지!
2018 데이터야 놀자
동적 페이지 개요
페이지가 Javascript를 통해 동적으로 렌더링되는 경우에는
정적:
동적:
2018 데이터야 놀자
동적 페이지 개요
아까 말한 단순한 방식으로는 크롤링할 수 없어요 ㅠㅜ
- 페이지를 받아오면 아무 정보도 없는 경우 -
Google trend, 과거의 youtube 등이
대표적.
HTML로 페이지의 틀을 잡고, 페이지가 로딩
되면서 동적으로 정보를 받아서 표시하는 방식.
- 페이지를 받아오면 일부의 정보만 있는 경우 -
Facebook, naver datalab, vogue korea
등 대부붂의 사이트가 이런 식.
처음에는 일부붂의 정보만 표시하고 이후에
사용자가 정보를 더 요청하는 동작을 한다면
추가적으로 정보를 받아서 표시하는 방식.
- Google Trend -
- Facebook -
2018 데이터야 놀자
동적 페이지 개요
물론 포기하라는 법은 없기에 다 방법이 있는데요.
2018 데이터야 놀자
동적 페이지 개요
좀 해보싞 고수님들은 흐름상 이 생각을 하고 계시겠지만
웹 드라이버 (Web Driver): 웹브라우저 UI 테스팅 툴.
‘동적 로딩 지원+브라우징 자동화’라는 장점으로 크롤링 할 때 많이 쓰임.
2018 데이터야 놀자
동적 페이지 개요
Web Driver: 웹브라우저 UI 테스팅 툴.
‘동적 로딩 지원+브라우징 자동화 가능’이라는 장점으로 웹 크롤링 할 때 많이 쓰임.
오늘은 웹드라이버를 쓰지 않고 이 문제를 해결하는 것도 다룰거에요.
(웹드라이버 쓰는 건 다들 많이 아시니깐;;)
동적 페이지 개요
Web Driver: 웹브라우저 UI 테스팅 툴.
‘동적 로딩 지원+브라우징 자동화 가능’이라는 장점으로 웹 크롤링 할 때 많이 쓰임.
오늘은 웹드라이버를 쓰지 않고 이 문제를 해결하는 것도 다룰거에요.
(웹드라이버 쓰는 건 구글링하면 금방 찾으니깐;;)
그러면 이제부터 동적 페이지 수집 방법과,
그에 따른 장·단점을 같이 알아봐요!
2018 데이터야 놀자
2018 데이터야 놀자
동적 페이지 크롤링
페이지 측에서
제공하는 API가
있는가?
성능보다
생산성이 우선읶가?
웹드라이버를
사용하지 않는 것만으로
해결 가능한가?
- Case 3 - - Case 4 - - Case 5 -
동적 페이지를 크롤링하기 젂에, 저 3가지를 꼭 체크해보는 것이 중요해요.
Yes
No
No
Yes
Yes
No
2018 데이터야 놀자
동적 페이지 크롤링
- Case 3 -
페이지에서 제공하는 API가 있는 경우 => API 홗용
유튜브 실시간 인기 동영상
2018 데이터야 놀자
동적 페이지 크롤링
유튜브, 페이스북같은 경우는
자체적으로 제공하는 ‘Data API’가 존재해요
2018 데이터야 놀자
동적 페이지 크롤링
유튜브, 페이스북같은 경우는
자체적으로 제공하는 ‘Data API’가 존재해요
장점 : 싞뢰도 보장, 빠름
단점 : API 키 필요, 쓰는법 배워야 함;;
이거 있는 줄 모르고 삽질하다가 나중에 발견하면 복장터짐
2018 데이터야 놀자
동적 페이지 크롤링
웹 드라이버 (Web Driver): 웹브라우저 UI 테스팅 툴.
‘동적 로딩 지원+브라우징 자동화’라는 장점으로 크롤링 할 때 많이 쓰임.
- Case 4 -
성능보다 생산성이 우선인 경우 => 웹 드라이버(Web Driver)
동적 페이지 크롤링
2018 데이터야 놀자
가져오려는 데이터가 그리 크지 않으면서 한 번 쓰고 버릴 용도와 같이
성능보다는 일단 당장 되는 것을 만들어야 할 경우 뿐만 아니라
참고 영상
오명운님 - Selenium 테스트 영상
동적 페이지 크롤링
2018 데이터야 놀자
그냥 귀찮을 때 보통 동적 페이지 수집할 때는 이걸 많이 써요.
참고 영상
How to Web Scrape with Python (Selenium/ChromeDriver)
동적 페이지 크롤링
2018 데이터야 놀자
그냥 귀찮을 때 보통 동적 페이지 수집할 때는 이걸 많이 써요.
참고 영상
How to Web Scrape with Python (Selenium/ChromeDriver)
장점 : 생산성, 익혀놓으면 웹페이지 반복작업에도 쓸 수 있음
단점 : 느림, 무거움, Python과 독립된 도구 필요
, 네트워크 상태의 영향을 크게 받음
2018 데이터야 놀자
동적 페이지 크롤링
보그 코리아 구글 트렌드
- Case 5 -
최적화가 필요한 경우 => 네트워크 리버싱을 통한 데이터 송·수싞 구조 추정
Koshort
2018 데이터야 놀자
동적 페이지 크롤링
보그 코리아, 구글 트렌드와 같이 점진적으로 로딩되는 페이지에서
실시갂·지속적인 데이터 수집이 필요한 경우나
보그 코리아 구글 트렌드
Koshort
동적 페이지 크롤링
저처럼 라이브러리로서 사람들에게 제공해야할 때와 같이
특수한 케이스가 왕왕 있어요
2018 데이터야 놀자
라이브러리라는 특성 상 ‘API 키’, ‘웹드라이버’와 같이
파이썬에 독립적인 요소를 사용하는 것은 최대한 피해야 하며,
생산 시간이 더 들더라도 성능을 최대화해야 함.
Koshort
동적 페이지 크롤링
저처럼 라이브러리로서 사람들에게 제공해야할 때와 같이
특수한 케이스가 왕왕 있어요
2018 데이터야 놀자
라이브러리라는 특성 상 ‘API 키’, ‘웹드라이버’와 같이
파이썬에 독립적인 요소를 사용하는 것은 최대한 피해야 하며,
생산 시간이 더 들더라도 성능을 최대화해야 함.
지금부터 이럴 때 사용하는 방법을 같이 알아봐요!
2018 데이터야 놀자
동적 페이지 크롤링
- Case 5-1 -
페이지를 받아왔는데, 정보가 일부 밖에 없는 경우
보그 코리아
2018 데이터야 놀자
동적 페이지 크롤링
- Case 5-1 -
페이지를 받아왔는데, 정보가 일부 밖에 없는 경우
보그 코리아
데이터가 로딩되는 시점의 Ajax 요청을 붂석한다!
2018 데이터야 놀자
동적 페이지 크롤링
많은 사이트에서 처음에는 일부 데이터만 보여주다가
‘스크롤 다운’ 동작이나 ‘더 로드하기’ 버튺 등을 통해서
동적으로 사이트를 보여주는 방식을 사용하는데요.
Scroll down!
Data Load!
2018 데이터야 놀자
동적 페이지 크롤링
이런 경우에는 데이터가 로딩되는 동작을 한 시점의
Ajax 요청을 보면서 그 데이터가 어디서 오는 지 붂석해요.
이 사이트의 경우에는 URL의 특정 엔드포인트를 통해서
데이터를 요청한다는 것을 알 수 있어요 
2018 데이터야 놀자
동적 페이지 크롤링
시험삼아 10페이지 정도 크롤링 해 봤을 때,
무려 3배 가까운 성능 향상을 보였다는 사실!
웹드라이버 사용 : 52[s] 웹드라이버 미사용 : 17[s]
동적 페이지 크롤링
시험삼아 10페이지 정도 크롤링 해 봤을 때,
무려 3배 가까운 성능 향상을 보였다는 사실!
웹드라이버 사용 : 52[s] 웹드라이버 미사용 : 17[s]
테스트는 데스크탑 유선랜 홖경에서 실행하였고,
네트워크 홖경에 따라서 결과가 달라질 수 있어요!
멀티스레딩, 멀티프로세싱 등으로 붂산처리를 구현한다면,
더 높은 퍼포먼스를 기대할 수 있어요 
2018 데이터야 놀자
2018 데이터야 놀자
동적 페이지 크롤링
- Case 5-2 -
페이지를 받아왔는데, 정보가 하나도 없는 경우
구글 트렌드
2018 데이터야 놀자
동적 페이지 크롤링
- Case 5-2 -
페이지를 받아왔는데, 정보가 하나도 없는 경우
구글 트렌드
처음 페이지가 로딩되는 시점부터
Ajax 요청 흐름을 따라가며 파악한다!
2018 데이터야 놀자
동적 페이지 크롤링
정적인 HTML은 틀을 만드는 용도로만 쓰고,
데이터는 모조리 JS로 처리하는 방식인데요.
2018 데이터야 놀자
동적 페이지 크롤링
구글 트렌드의 실시갂 급상승 검색어의 경우,
페이지를 로드하면 일단 키워드에 해당하는 젂체 리스트를 가져오고
구글 트렌드
2018 데이터야 놀자
동적 페이지 크롤링
그 리스트의 요소들을 하나씩 요청해서 가져오는 방식이에요.
구글 트렌드
2018 데이터야 놀자
동적 페이지 크롤링
역시나 이 경우에도 9배 정도의 향상을 확인할 수 있었어요!
이 경우도 멀티스레딩 등을 통해서 더 최적화가 가능하답니다 
웹드라이버 사용 : 54[s] 웹드라이버 미사용 : 6[s]
2018 데이터야 놀자
동적 페이지 크롤링
역시나 이 경우에도 9배 정도의 향상을 확인할 수 있었어요!
이 경우도 멀티스레딩 등을 통해서 더 최적화가 가능하답니다 
웹드라이버 사용 : 54[s] 웹드라이버 미사용 : 6[s]
장점 : 빠름, 가벼움
단점 : 번거로움;;, 웹개발에 대한 지식 필요
2018 데이터야 놀자
마무리
2018 데이터야 놀자
마무리
이면 참 좋으렦만……
2018 데이터야 놀자
마무리
페이지 측에서
제공하는 API가
있는가?
성능보다
생산성이 우선읶가?
웹드라이버를
사용하지 않는 것만으로
해결 가능한가?
- Case 3 - - Case 4 - - Case 5 -
오늘 얘기하지 못한 것도, 앞으로 헤쳐나가야 할 것도 너무너무 많아요 ㅠㅠ
Yes
No
- Case 2 -- Case 1 -
정보는 다 있는데
브라우저와 소스가
다른가?
페이지를 가져왔을 때
모든 정보가 다
있는가?
No
No
No
No
Yes
Yes
Yes
Yes
정적 페이지 동적 페이지
앞으로의 험난한 여정
2018 데이터야 놀자
마무리
페이지 측에서
제공하는 API가
있는가?
성능보다
생산성이 우선읶가?
웹드라이버를
사용하지 않는 것만으로
해결 가능한가?
- Case 3 - - Case 4 - - Case 5 -
오늘 얘기하지 못한 것도, 앞으로 헤쳐나가야 할 것도 너무너무 많아요 ㅠㅠ
Yes
No
- Case 2 -- Case 1 -
정보는 다 있는데
브라우저와 소스가
다른가?
페이지를 가져왔을 때
모든 정보가 다
있는가?
No
No
No
No
Yes
Yes
Yes
Yes
정적 페이지 동적 페이지
앞으로의 험난한 여정그래서 여러붂께 많이 배우고자 해요……
2018 데이터야 놀자
마무리
잘 부탁 드립니다 ㅠㅠ
마무리
잘 부탁 드립니다 ㅠㅠ
https://github.com/BbChip0103/2018_datayanolja_webcrawling.git
Case 5의 소스코드는 여기서 확인하실 수 있어요 
2018 데이터야 놀자

More Related Content

What's hot

Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Hyungwook Lee
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)Yongho Ha
 
[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것NAVER Engineering
 
추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.choi kyumin
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법Jeongsang Baek
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices
[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices
[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best PracticesPAP (Product Analytics Playground)
 
지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)
지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)
지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)Myungjin Lee
 
Semantic search Bill Slawski DEEP SEA Con
Semantic search Bill Slawski DEEP SEA ConSemantic search Bill Slawski DEEP SEA Con
Semantic search Bill Slawski DEEP SEA ConBill Slawski
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)_ce
 
Introduction to SEO
Introduction to SEOIntroduction to SEO
Introduction to SEOKevin Jonas
 
Google Tag Manager Training
Google Tag Manager TrainingGoogle Tag Manager Training
Google Tag Manager TrainingEmpirical Path
 
데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스
데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스
데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스Minwoo Kim
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Seongyun Byeon
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것NAVER D2
 

What's hot (20)

Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
Web Crawling
Web CrawlingWeb Crawling
Web Crawling
 
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
 
Google Analytics 4 - OMT
Google Analytics 4 - OMTGoogle Analytics 4 - OMT
Google Analytics 4 - OMT
 
[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것[24]안드로이드 웹뷰의 모든것
[24]안드로이드 웹뷰의 모든것
 
추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices
[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices
[팝콘 시즌1] 최보경 : 실무자를 위한 인과추론 활용 - Best Practices
 
Seo plan
Seo planSeo plan
Seo plan
 
지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)
지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)
지식그래프 개념과 활용방안 (Knowledge Graph - Introduction and Use Cases)
 
Semantic search Bill Slawski DEEP SEA Con
Semantic search Bill Slawski DEEP SEA ConSemantic search Bill Slawski DEEP SEA Con
Semantic search Bill Slawski DEEP SEA Con
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)
 
Introduction to SEO
Introduction to SEOIntroduction to SEO
Introduction to SEO
 
Google Tag Manager Training
Google Tag Manager TrainingGoogle Tag Manager Training
Google Tag Manager Training
 
데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스
데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스
데이터 기반 성장을 위한 선결 조건: Product-Market Fit, Instrumentation, 그리고 프로세스
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
 

Similar to [2018 데이터야놀자] 웹크롤링 좀 더 잘하기

검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티
검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티
검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티eunpyo hong
 
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018Amazon Web Services Korea
 
python으로 고양이짤 다운로드
python으로 고양이짤 다운로드python으로 고양이짤 다운로드
python으로 고양이짤 다운로드who7117
 
NPO, Web을 더 똑똑하게 활용하기 2018
NPO, Web을 더 똑똑하게 활용하기 2018NPO, Web을 더 똑똑하게 활용하기 2018
NPO, Web을 더 똑똑하게 활용하기 2018Junghwa Han
 
SEO_GETCHA_HANJUNG
SEO_GETCHA_HANJUNGSEO_GETCHA_HANJUNG
SEO_GETCHA_HANJUNGJung Han
 
Swc발표자료2 4(search)
Swc발표자료2 4(search)Swc발표자료2 4(search)
Swc발표자료2 4(search)마경근 마
 
언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차chan693050
 
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 201830분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018Amazon Web Services Korea
 
구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리라한사 아
 
구글Vs네이버 3조 검,광고,킬러앱
구글Vs네이버 3조 검,광고,킬러앱구글Vs네이버 3조 검,광고,킬러앱
구글Vs네이버 3조 검,광고,킬러앱Webometrics Class
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220Seomgi Han
 
Rpa usecase modified
Rpa usecase modifiedRpa usecase modified
Rpa usecase modifiedssuser9a50211
 
검색엔진최적화의 기본 비영리세미나용
검색엔진최적화의 기본 비영리세미나용검색엔진최적화의 기본 비영리세미나용
검색엔진최적화의 기본 비영리세미나용choi wi hwan
 
글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO
글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO
글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEOJongyoonJeong1
 
진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술Taegon Kim
 
2011년 1월 Webdevmobile 세미나
2011년 1월 Webdevmobile 세미나2011년 1월 Webdevmobile 세미나
2011년 1월 Webdevmobile 세미나korea_simgoon
 
어흥~!이번발표
어흥~!이번발표어흥~!이번발표
어흥~!이번발표korea_simgoon
 
Webdevmobile 2011 01
Webdevmobile 2011 01Webdevmobile 2011 01
Webdevmobile 2011 01korea_simgoon
 

Similar to [2018 데이터야놀자] 웹크롤링 좀 더 잘하기 (20)

검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티
검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티
검색엔진 랭킹 상위 - scs(seo curation suite) 서비스 넥스트티
 
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
Serverless로 이미지 크롤링 프로토타입 개발기::유호균::AWS Summit Seoul 2018
 
python으로 고양이짤 다운로드
python으로 고양이짤 다운로드python으로 고양이짤 다운로드
python으로 고양이짤 다운로드
 
NPO, Web을 더 똑똑하게 활용하기 2018
NPO, Web을 더 똑똑하게 활용하기 2018NPO, Web을 더 똑똑하게 활용하기 2018
NPO, Web을 더 똑똑하게 활용하기 2018
 
SEO_GETCHA_HANJUNG
SEO_GETCHA_HANJUNGSEO_GETCHA_HANJUNG
SEO_GETCHA_HANJUNG
 
Seo
SeoSeo
Seo
 
Swc발표자료2 4(search)
Swc발표자료2 4(search)Swc발표자료2 4(search)
Swc발표자료2 4(search)
 
언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차언론사에 구글 애널리틱스 도입하기 - 강의 1주차
언론사에 구글 애널리틱스 도입하기 - 강의 1주차
 
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 201830분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
30분만에 만드는 AWS 기반 빅데이터 분석 애플리케이션::안효빈::AWS Summit Seoul 2018
 
구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리
 
구글Vs네이버 3조 검,광고,킬러앱
구글Vs네이버 3조 검,광고,킬러앱구글Vs네이버 3조 검,광고,킬러앱
구글Vs네이버 3조 검,광고,킬러앱
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 
Rpa usecase modified
Rpa usecase modifiedRpa usecase modified
Rpa usecase modified
 
검색엔진최적화의 기본 비영리세미나용
검색엔진최적화의 기본 비영리세미나용검색엔진최적화의 기본 비영리세미나용
검색엔진최적화의 기본 비영리세미나용
 
글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO
글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO
글또 9기 프론트엔드 · 모바일 반상회 발표 - 기술 블로그를 위한 SEO
 
진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술진화하는 소셜 큐레이션 서비스와 관련 기술
진화하는 소셜 큐레이션 서비스와 관련 기술
 
Use case of rpa
Use case of rpaUse case of rpa
Use case of rpa
 
2011년 1월 Webdevmobile 세미나
2011년 1월 Webdevmobile 세미나2011년 1월 Webdevmobile 세미나
2011년 1월 Webdevmobile 세미나
 
어흥~!이번발표
어흥~!이번발표어흥~!이번발표
어흥~!이번발표
 
Webdevmobile 2011 01
Webdevmobile 2011 01Webdevmobile 2011 01
Webdevmobile 2011 01
 

[2018 데이터야놀자] 웹크롤링 좀 더 잘하기

  • 1. 웹 크롤링 좀 더 잘하기 2018. 10. 19 2018 데이터야 놀자 University of seoil Computer electronic Wangwon Lee College Major Name
  • 2. Contents  발표자 소개  이런 이야기를 하고 싶어요!  웹 크롤링 개요  기본적인 웹 크롤링  동적 페이지 개요  동적 페이지 크롤링  마무리 2018 데이터야 놀자
  • 3. 2018 데이터야 놀자 발표자 소개 - 이왕원  전자부품연구원 인공지능연구센터 위촉연구원  서일대학교 소프트웨어 공학과 재학 중  실시간 데이터 수집 프로젝트인 KoShort 컨트리뷰터  아직 많이 부족합니다. 여러분께 많이 배우고 싶어요!
  • 4. 발표자 소개 - 이왕원  전자부품연구원 인공지능연구센터 위촉연구원  서일대학교 소프트웨어 공학과 재학 중  실시간 데이터 수집 프로젝트인 KoShort 컨트리뷰터  아직 많이 부족합니다. 여러분께 많이 배우고 싶어요! 웹 크롤링은 자료 찾기가 너무 힘들어서 제가 먼저 공유하고자 이렇게 발표하게 되었어요. 이걸 계기로 웹크롤링도 많은 정보 공유가 있었으면 해요.  2018 데이터야 놀자
  • 5. 2018 데이터야 놀자 이런 이야기를 하고 싶어요!  차근차근 짚어보는 웹크롤링의 흐름  데이터 수집 및 정제 실무를 하면서 느낀 이상과 현실  구글이나 책에서는 찾을 수 없는 꿀팁 공유!  실시간 데이터 수집 오픈소스 Koshort 홍보
  • 6. 2018 데이터야 놀자 이런 이야기를 하고 싶어요! 페이지 측에서 제공하는 API가 있는가? 성능보다 생산성이 우선읶가? 웹드라이버를 사용하지 않는 것만으로 해결 가능한가? - Case 3 - - Case 4 - - Case 5 - 오늘은 이 흐름을 토대로 웹 크롤링을 차근차근 짚어볼거에요 Yes No - Case 2 -- Case 1 - 정보는 다 있는데 브라우저와 소스가 다른가? 페이지를 가져왔을 때 모든 정보가 다 있는가? No No No No Yes Yes Yes Yes 정적 페이지 동적 페이지
  • 7. 2018 데이터야 놀자 웹 크롤링 개요 흔한 웹 크롤러의 흐름.jpg
  • 8. 2018 데이터야 놀자 웹 크롤링 개요 HTTP에는, GET과 POST와 같은 메소드가 있는데
  • 9. 2018 데이터야 놀자 웹 크롤링 개요 GET은 가져오는 동작, POST는 수행하는 동작 을 위해 설계되었어요.
  • 10. 2018 데이터야 놀자 웹 크롤링 개요 우리가 쓰는 웹 브라우저라는 친구들은
  • 11. 2018 데이터야 놀자 웹 크롤링 개요 HTML 소스를 해석해서 웹 페이지를 그려주는 역할을 해요 표시된 화면 HTML 소스
  • 12. 2018 데이터야 놀자 웹 크롤링 개요 따라서 브라우저 주소 창에 주소를 입력하고 엔터를 치는 것은 +
  • 13. 2018 데이터야 놀자 웹 크롤링 개요 주소에 할당된 웹 서버로 GET 요청을 보내서 웹 페이지를 가져오는 동작이에요
  • 14. 2018 데이터야 놀자 웹 크롤링 개요 음… Request 모듈로 대상 사이트에 get 요청을 해서 HTML 소스를 받아오고, BeautifulSoup로 원하는 부붂만 파싱해서 쓰면 되겠지…? 통상적인 웹 크롤러 또한 같은 원리로, GET 메소드를 통해 웹 페이지를 가져와서, 원하는 부붂만 뽑아 쓰는 개념이에요.
  • 15. 웹 크롤링 개요 음… Request 모듈로 대상 사이트에 get 요청을 해서 HTML 소스를 받아오고, BeautifulSoup로 원하는 부붂만 파싱해서 쓰면 되겠지…? 통상적인 웹 크롤러 또한 같은 원리로, GET 메소드를 통해 웹 페이지를 가져와서, 원하는 부붂만 뽑아 쓰는 개념이에요. 이제 실제 사례를 통해 한 번 알아볼게요!~ 2018 데이터야 놀자
  • 16. 2018 데이터야 놀자 기본적인 웹 크롤링 - Case 1 - 페이지를 받아오면 정보가 그대로 있는 경우 네이버 인기검색어
  • 17. 2018 데이터야 놀자 기본적인 웹 크롤링 - Case 1 - 페이지를 받아오면 정보가 그대로 있는 경우 네이버 인기검색어 HTML 태그와 그에 따른 속성(class, id 등)을 토대로 필요한 정보만 파싱해서 추출.
  • 18. 2018 데이터야 놀자 기본적인 웹 크롤링 유튜브 실시간 인기 동영상 - Case 2 - 정보는 다 있는데, 브라우저 상에서와 내가 받은 소스가 다른 경우
  • 19. - Case 2 - 정보는 다 있는데, 브라우저 상에서와 내가 받은 소스가 다른 경우 2018 데이터야 놀자 기본적인 웹 크롤링 유튜브 실시간 인기 동영상 당황하지 말고, user-agent를 변경해보자! (보통 ‘i-explorer’가 디폴트인 경우가 많음)
  • 20. 2018 데이터야 놀자 기본적인 웹 크롤링 - Case ? - 내가 받은 페이지에서는 정보가 일부만 있거나 아예 앆보이는 경우 - Vogue Korea - - Google Trend - - Reddit - - Facebook -
  • 21. 기본적인 웹 크롤링 - Case ? - 내가 받은 페이지에서는 정보가 일부만 있거나 아예 앆보이는 경우 - Vogue Korea - - Google Trend - - Reddit - - Facebook - 일단 Javascript를 비홗성화 시켜보자! 2018 데이터야 놀자
  • 22. 2018 데이터야 놀자 기본적인 웹 크롤링 만약 크롬 개발자 도구에서 자바스크립트를 비홗성화 했을 때 웹브라우저 상에서도 동일한 증상이 보인다면? F5 구글 트렌드
  • 23. 2018 데이터야 놀자 기본적인 웹 크롤링 만약 크롬 개발자 도구에서 자바스크립트를 비홗성화 했을 때 웹브라우저 상에서도 동일한 증상이 보인다면? F5 구글 트렌드 이건 100% 동적 페이지!
  • 24. 2018 데이터야 놀자 동적 페이지 개요 페이지가 Javascript를 통해 동적으로 렌더링되는 경우에는 정적: 동적:
  • 25. 2018 데이터야 놀자 동적 페이지 개요 아까 말한 단순한 방식으로는 크롤링할 수 없어요 ㅠㅜ - 페이지를 받아오면 아무 정보도 없는 경우 - Google trend, 과거의 youtube 등이 대표적. HTML로 페이지의 틀을 잡고, 페이지가 로딩 되면서 동적으로 정보를 받아서 표시하는 방식. - 페이지를 받아오면 일부의 정보만 있는 경우 - Facebook, naver datalab, vogue korea 등 대부붂의 사이트가 이런 식. 처음에는 일부붂의 정보만 표시하고 이후에 사용자가 정보를 더 요청하는 동작을 한다면 추가적으로 정보를 받아서 표시하는 방식. - Google Trend - - Facebook -
  • 26. 2018 데이터야 놀자 동적 페이지 개요 물론 포기하라는 법은 없기에 다 방법이 있는데요.
  • 27. 2018 데이터야 놀자 동적 페이지 개요 좀 해보싞 고수님들은 흐름상 이 생각을 하고 계시겠지만 웹 드라이버 (Web Driver): 웹브라우저 UI 테스팅 툴. ‘동적 로딩 지원+브라우징 자동화’라는 장점으로 크롤링 할 때 많이 쓰임.
  • 28. 2018 데이터야 놀자 동적 페이지 개요 Web Driver: 웹브라우저 UI 테스팅 툴. ‘동적 로딩 지원+브라우징 자동화 가능’이라는 장점으로 웹 크롤링 할 때 많이 쓰임. 오늘은 웹드라이버를 쓰지 않고 이 문제를 해결하는 것도 다룰거에요. (웹드라이버 쓰는 건 다들 많이 아시니깐;;)
  • 29. 동적 페이지 개요 Web Driver: 웹브라우저 UI 테스팅 툴. ‘동적 로딩 지원+브라우징 자동화 가능’이라는 장점으로 웹 크롤링 할 때 많이 쓰임. 오늘은 웹드라이버를 쓰지 않고 이 문제를 해결하는 것도 다룰거에요. (웹드라이버 쓰는 건 구글링하면 금방 찾으니깐;;) 그러면 이제부터 동적 페이지 수집 방법과, 그에 따른 장·단점을 같이 알아봐요! 2018 데이터야 놀자
  • 30. 2018 데이터야 놀자 동적 페이지 크롤링 페이지 측에서 제공하는 API가 있는가? 성능보다 생산성이 우선읶가? 웹드라이버를 사용하지 않는 것만으로 해결 가능한가? - Case 3 - - Case 4 - - Case 5 - 동적 페이지를 크롤링하기 젂에, 저 3가지를 꼭 체크해보는 것이 중요해요. Yes No No Yes Yes No
  • 31. 2018 데이터야 놀자 동적 페이지 크롤링 - Case 3 - 페이지에서 제공하는 API가 있는 경우 => API 홗용 유튜브 실시간 인기 동영상
  • 32. 2018 데이터야 놀자 동적 페이지 크롤링 유튜브, 페이스북같은 경우는 자체적으로 제공하는 ‘Data API’가 존재해요
  • 33. 2018 데이터야 놀자 동적 페이지 크롤링 유튜브, 페이스북같은 경우는 자체적으로 제공하는 ‘Data API’가 존재해요 장점 : 싞뢰도 보장, 빠름 단점 : API 키 필요, 쓰는법 배워야 함;; 이거 있는 줄 모르고 삽질하다가 나중에 발견하면 복장터짐
  • 34. 2018 데이터야 놀자 동적 페이지 크롤링 웹 드라이버 (Web Driver): 웹브라우저 UI 테스팅 툴. ‘동적 로딩 지원+브라우징 자동화’라는 장점으로 크롤링 할 때 많이 쓰임. - Case 4 - 성능보다 생산성이 우선인 경우 => 웹 드라이버(Web Driver)
  • 35. 동적 페이지 크롤링 2018 데이터야 놀자 가져오려는 데이터가 그리 크지 않으면서 한 번 쓰고 버릴 용도와 같이 성능보다는 일단 당장 되는 것을 만들어야 할 경우 뿐만 아니라 참고 영상 오명운님 - Selenium 테스트 영상
  • 36. 동적 페이지 크롤링 2018 데이터야 놀자 그냥 귀찮을 때 보통 동적 페이지 수집할 때는 이걸 많이 써요. 참고 영상 How to Web Scrape with Python (Selenium/ChromeDriver)
  • 37. 동적 페이지 크롤링 2018 데이터야 놀자 그냥 귀찮을 때 보통 동적 페이지 수집할 때는 이걸 많이 써요. 참고 영상 How to Web Scrape with Python (Selenium/ChromeDriver) 장점 : 생산성, 익혀놓으면 웹페이지 반복작업에도 쓸 수 있음 단점 : 느림, 무거움, Python과 독립된 도구 필요 , 네트워크 상태의 영향을 크게 받음
  • 38. 2018 데이터야 놀자 동적 페이지 크롤링 보그 코리아 구글 트렌드 - Case 5 - 최적화가 필요한 경우 => 네트워크 리버싱을 통한 데이터 송·수싞 구조 추정 Koshort
  • 39. 2018 데이터야 놀자 동적 페이지 크롤링 보그 코리아, 구글 트렌드와 같이 점진적으로 로딩되는 페이지에서 실시갂·지속적인 데이터 수집이 필요한 경우나 보그 코리아 구글 트렌드
  • 40. Koshort 동적 페이지 크롤링 저처럼 라이브러리로서 사람들에게 제공해야할 때와 같이 특수한 케이스가 왕왕 있어요 2018 데이터야 놀자 라이브러리라는 특성 상 ‘API 키’, ‘웹드라이버’와 같이 파이썬에 독립적인 요소를 사용하는 것은 최대한 피해야 하며, 생산 시간이 더 들더라도 성능을 최대화해야 함.
  • 41. Koshort 동적 페이지 크롤링 저처럼 라이브러리로서 사람들에게 제공해야할 때와 같이 특수한 케이스가 왕왕 있어요 2018 데이터야 놀자 라이브러리라는 특성 상 ‘API 키’, ‘웹드라이버’와 같이 파이썬에 독립적인 요소를 사용하는 것은 최대한 피해야 하며, 생산 시간이 더 들더라도 성능을 최대화해야 함. 지금부터 이럴 때 사용하는 방법을 같이 알아봐요!
  • 42. 2018 데이터야 놀자 동적 페이지 크롤링 - Case 5-1 - 페이지를 받아왔는데, 정보가 일부 밖에 없는 경우 보그 코리아
  • 43. 2018 데이터야 놀자 동적 페이지 크롤링 - Case 5-1 - 페이지를 받아왔는데, 정보가 일부 밖에 없는 경우 보그 코리아 데이터가 로딩되는 시점의 Ajax 요청을 붂석한다!
  • 44. 2018 데이터야 놀자 동적 페이지 크롤링 많은 사이트에서 처음에는 일부 데이터만 보여주다가 ‘스크롤 다운’ 동작이나 ‘더 로드하기’ 버튺 등을 통해서 동적으로 사이트를 보여주는 방식을 사용하는데요. Scroll down! Data Load!
  • 45. 2018 데이터야 놀자 동적 페이지 크롤링 이런 경우에는 데이터가 로딩되는 동작을 한 시점의 Ajax 요청을 보면서 그 데이터가 어디서 오는 지 붂석해요. 이 사이트의 경우에는 URL의 특정 엔드포인트를 통해서 데이터를 요청한다는 것을 알 수 있어요 
  • 46. 2018 데이터야 놀자 동적 페이지 크롤링 시험삼아 10페이지 정도 크롤링 해 봤을 때, 무려 3배 가까운 성능 향상을 보였다는 사실! 웹드라이버 사용 : 52[s] 웹드라이버 미사용 : 17[s]
  • 47. 동적 페이지 크롤링 시험삼아 10페이지 정도 크롤링 해 봤을 때, 무려 3배 가까운 성능 향상을 보였다는 사실! 웹드라이버 사용 : 52[s] 웹드라이버 미사용 : 17[s] 테스트는 데스크탑 유선랜 홖경에서 실행하였고, 네트워크 홖경에 따라서 결과가 달라질 수 있어요! 멀티스레딩, 멀티프로세싱 등으로 붂산처리를 구현한다면, 더 높은 퍼포먼스를 기대할 수 있어요  2018 데이터야 놀자
  • 48. 2018 데이터야 놀자 동적 페이지 크롤링 - Case 5-2 - 페이지를 받아왔는데, 정보가 하나도 없는 경우 구글 트렌드
  • 49. 2018 데이터야 놀자 동적 페이지 크롤링 - Case 5-2 - 페이지를 받아왔는데, 정보가 하나도 없는 경우 구글 트렌드 처음 페이지가 로딩되는 시점부터 Ajax 요청 흐름을 따라가며 파악한다!
  • 50. 2018 데이터야 놀자 동적 페이지 크롤링 정적인 HTML은 틀을 만드는 용도로만 쓰고, 데이터는 모조리 JS로 처리하는 방식인데요.
  • 51. 2018 데이터야 놀자 동적 페이지 크롤링 구글 트렌드의 실시갂 급상승 검색어의 경우, 페이지를 로드하면 일단 키워드에 해당하는 젂체 리스트를 가져오고 구글 트렌드
  • 52. 2018 데이터야 놀자 동적 페이지 크롤링 그 리스트의 요소들을 하나씩 요청해서 가져오는 방식이에요. 구글 트렌드
  • 53. 2018 데이터야 놀자 동적 페이지 크롤링 역시나 이 경우에도 9배 정도의 향상을 확인할 수 있었어요! 이 경우도 멀티스레딩 등을 통해서 더 최적화가 가능하답니다  웹드라이버 사용 : 54[s] 웹드라이버 미사용 : 6[s]
  • 54. 2018 데이터야 놀자 동적 페이지 크롤링 역시나 이 경우에도 9배 정도의 향상을 확인할 수 있었어요! 이 경우도 멀티스레딩 등을 통해서 더 최적화가 가능하답니다  웹드라이버 사용 : 54[s] 웹드라이버 미사용 : 6[s] 장점 : 빠름, 가벼움 단점 : 번거로움;;, 웹개발에 대한 지식 필요
  • 57. 2018 데이터야 놀자 마무리 페이지 측에서 제공하는 API가 있는가? 성능보다 생산성이 우선읶가? 웹드라이버를 사용하지 않는 것만으로 해결 가능한가? - Case 3 - - Case 4 - - Case 5 - 오늘 얘기하지 못한 것도, 앞으로 헤쳐나가야 할 것도 너무너무 많아요 ㅠㅠ Yes No - Case 2 -- Case 1 - 정보는 다 있는데 브라우저와 소스가 다른가? 페이지를 가져왔을 때 모든 정보가 다 있는가? No No No No Yes Yes Yes Yes 정적 페이지 동적 페이지 앞으로의 험난한 여정
  • 58. 2018 데이터야 놀자 마무리 페이지 측에서 제공하는 API가 있는가? 성능보다 생산성이 우선읶가? 웹드라이버를 사용하지 않는 것만으로 해결 가능한가? - Case 3 - - Case 4 - - Case 5 - 오늘 얘기하지 못한 것도, 앞으로 헤쳐나가야 할 것도 너무너무 많아요 ㅠㅠ Yes No - Case 2 -- Case 1 - 정보는 다 있는데 브라우저와 소스가 다른가? 페이지를 가져왔을 때 모든 정보가 다 있는가? No No No No Yes Yes Yes Yes 정적 페이지 동적 페이지 앞으로의 험난한 여정그래서 여러붂께 많이 배우고자 해요……
  • 59. 2018 데이터야 놀자 마무리 잘 부탁 드립니다 ㅠㅠ
  • 60. 마무리 잘 부탁 드립니다 ㅠㅠ https://github.com/BbChip0103/2018_datayanolja_webcrawling.git Case 5의 소스코드는 여기서 확인하실 수 있어요  2018 데이터야 놀자