SlideShare a Scribd company logo
1 of 31
0 
Python 
Web Crawler 
Development 
인천대학교 OneScore 
200901319 최창원
1 
INDEX. 
1 2 3 4 
발표 
소개 
파이썬 
소개 
크롤러 
소개 
다운로더 
&스크래퍼 
5 
다음 
로그인 
6 
마무리 
으리
2 
발표 소개 1
3 
파이썬이 뭔대? 
거대하고 자동화된 크롤러를 제작하는 방법은 아닌 
웹 크롤러를 만드는데 필요한 기초지식 전달 
팬텀JS 사용? 
소스코드 설명, 실습위주의 진행 
오늘 할 내용
1991년 
귀도 반 로섬에 의해 탄생 
문법이 쉽고 직관적이다. 
built-in 라이브러리가 많아 
할 수 있는게 매우 많다. 
크로스 플랫폼을 지원한다. 
4 Why Python?
인터프리터위에서 실행된다. 
C와 Java와 다른 
동적 타이핑을 사용한다. 
강력한 리플렉션이 가능하다. 
5 Feature
<모 Naver 카페> 
6 Web Crawler
<스포츠 기사> 
7 Web Crawler
<뉴스 기사> 
8 Web Crawler
World Wide Web을 통해 주고 받는 정보를 수집하는 
자동화 소프트웨어 
주로 다음과 같은 곳에 사용할 수 있습니다. 
• 기계학습 소프트웨어 개발 시 데이터를 수집할 경우 
• 검색엔진을 위해 문서를 수집 할 경우 
• 프로젝트에 필요한 컨텐츠를 수집할 때 
• 개인적으로 필요한 정보를 주기적으로 수신 받고 싶을 때 
9 Web Crawler
10 Search Engine
1) HTTP 
Requests 
(GET, POST) 
2) HTTP 
Response 
(HTML, Javacript, 
ETC Files) 
Web Server 
11 Web Crawler
<hi-bogo.net 메인 페이지 접속 했을 때> 
12 HTTP GET (Request)
<hi-bogo.net 로그인 할 때> 
13 HTTP POST (Request)
<http://news.naver.com/main/search/search.nhn?query=%B1%B8%B1%DB&x=0&y=0> 
<HTML - 계층구조> 
14 HTML (Response)
15 
https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko 
HTML + AJAX!!? 
(Response)
Requests 
• 간편하고 쉬운 메서드 
• HTTP 프로토콜 조작이 쉬움 
• SSL 걱정 ㄴㄴ 
BeatifulSoup4 
• HTML 파싱 트리 생성 
• HTML 검색 및 순회(네비게이팅)가 쉬움 
참고 
http://pythonhackers.com/open-source/ 
http://www.crummy.com/software/BeautifulSoup/bs4/doc/ 
http://docs.python-requests.org/en/latest/ 
16 Python Modules
17 
네이버 인기 검색어 크롤링 
ㄱㄱ
18 
#-*- encoding: utf-8 -*- 
#실시간 검색어 
import requests as rs 
import bs4 
def getTopRank(): 
naver_url = 'http://www.naver.com' 
#1)요청 
response = rs.get(naver_url) 
#2)응답으로 부터 HTML 추출 
html_content = response.text.encode(response.encoding); 
............ 
Requests 예제 
(네이버 인기 검색어)
19 
............ 
BeautifulSoup 예제 
#2)응답으로 부터 HTML 추출 
html_content = response.text.encode(response.encoding); 
#3)HTML 파싱 
navigator = bs4.BeautifulSoup(html_content) 
#4)네비게이터를 이용해 원하는 태그 리스트 가져오기 
realRankTag = navigator.find_all(id='realrank') 
resultList = realRankTag[0].find_all('a') 
#5)키워드 추출 
keywords = [item['title'] for item in resultList] 
#6)키워드 출력 
for index, keyword in enumerate(keywords): 
resultText = '[%d위] %s'%(index,keyword.encode('utf-8')) 
print resultText.decode('utf-8').encode('euc-kr')
20 
네이버 인기 검색어 
크롤링 실습 
https://github.com/qwefgh90/Web_Crawler 
naverTopRank.py
21 
게시판 문서 다운로더 
ㄱㄱ
• 다운받을 파일이 너무 많아 일일히 클릭하기 지치고 힘들 때 ! 
• 배운거 활용해보고 싶을 때 
• 잉여로울 때 
사실 그다지 쓸모는 없습니다... 
22 게시판 문서 다운로더
구현 절차 
1. 파일 다운로드를 요청하는 부분을 분석 
2. 똑같은 헤더와 페이로드를 만들어서 똑같은 요청을 다시 보내본다. 
3. 요청한 파일이 응답에 제대로 담겨있는지? 
HTTP 응답코드가 200인지 확인? 
4. 파일로 저장한다. 
23 게시판 문서 다운로더
24 
게시판 문서 다운로더 
실습 
https://github.com/qwefgh90/Web_Crawler 
delphi_downloader.py
25 
그러나 항상 이처럼 
쉬운 것은 아닙니다...!
• 자바스크립트에 크롤링 할 내용이 숨겨져 있다면? (멜론 크롤링) 
• 분석해봤지만 스크립트가 단순하지 않을 때? (네이버 로그인) 
• 브라우저에서 매크로 돌리듯이 사용하고 싶을 때!! 
26 The power of browsers
실제 브라우저를 사용해서 크롤링 해보자. 
이때 Headless Browser인 PhantomJS는 매우 유용하다. 
파이썬에서 PhantomJS를 다루기 위해선 Selenium 모듈이 필요하다. 
PhantomJS 란 ? 
웹 표준을 따르는 headless Webkit 이다. 자바스크립트를 사용할 수 있으며 DOM, CSS, 
JSON, SVG등을 컨트롤 할 수 있다. 
Selenium 이란 ?? 
브라우저와 드라이버로 연결되어 브라우저에서 하는 작업들을 자동화 시킬 수 있다. 
selenium은 웹 인터페이스로 동작하며 많은 브라우저가 selenium과 호환이 되고 
PhantomJS와도 호환이 된다. 
27 Browser
Phantomjs.exe 
WebDriver 
Resources 
Web Server 
Browsing 
28 Crawler with browser
29 
네이버 로그인 후 세션취득 
https://github.com/qwefgh90/SeleniumSample 
crawler.py
30 
감사합니다.

More Related Content

What's hot

[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑neuroassociates
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)Eunjeong (Lucy) Park
 
Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)Jeong-gyu Kim
 
141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍Changwon Choe
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료라한사 아
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링HWANGTAEYONG
 
언론사에서 개발자는 무슨 일을 하나요?
언론사에서 개발자는 무슨 일을 하나요?언론사에서 개발자는 무슨 일을 하나요?
언론사에서 개발자는 무슨 일을 하나요?슬 김
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편준철 박
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기Changwan Jun
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치Juneyoung Oh
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기은아 정
 
Parse.com 맛보기
Parse.com 맛보기Parse.com 맛보기
Parse.com 맛보기flashscope
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XpressEngine
 
HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장Hyejin Oh
 
스프링 오픈소스 정리
스프링 오픈소스 정리스프링 오픈소스 정리
스프링 오픈소스 정리라한사 아
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)성일 한
 

What's hot (20)

[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑[Week2] 데이터 스크래핑
[Week2] 데이터 스크래핑
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)Node.js를 활용한 웹 크롤링(Crawling)
Node.js를 활용한 웹 크롤링(Crawling)
 
141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍141103 최창원 파이썬 확장 프로그래밍
141103 최창원 파이썬 확장 프로그래밍
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링
 
언론사에서 개발자는 무슨 일을 하나요?
언론사에서 개발자는 무슨 일을 하나요?언론사에서 개발자는 무슨 일을 하나요?
언론사에서 개발자는 무슨 일을 하나요?
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편
 
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기
 
Parse.com 맛보기
Parse.com 맛보기Parse.com 맛보기
Parse.com 맛보기
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장
 
스프링 오픈소스 정리
스프링 오픈소스 정리스프링 오픈소스 정리
스프링 오픈소스 정리
 
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
파이썬 플라스크로 배우는 웹프로그래밍 #1 (ABCD Foundation)
 

Viewers also liked

Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
웹크롤러 조사
웹크롤러 조사웹크롤러 조사
웹크롤러 조사rupert kim
 
6장 지능형 웹 크롤링
6장 지능형 웹 크롤링6장 지능형 웹 크롤링
6장 지능형 웹 크롤링Chanil Kim
 
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁에디티지(Editage Korea)
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...Igalia
 
U2 product For Wiseeco
U2 product For WiseecoU2 product For Wiseeco
U2 product For Wiseeco호진 하
 
Global mobile market report
Global mobile market reportGlobal mobile market report
Global mobile market reportChang Kim
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
Pure Function and Honest Design
Pure Function and Honest DesignPure Function and Honest Design
Pure Function and Honest DesignHyungho Ko
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYAnaya Medias Swiss
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-HelmSK Telecom
 
1, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v21, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v2Dongsun Moon
 
클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStack클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStackChoe Cheng-Dae
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes
[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes
[OpenStack Days Korea 2016] Track4 - OpenStack with KubernetesOpenStack Korea Community
 
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...OpenStack Korea Community
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Wooseung Kim
 
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개OpenStack Korea Community
 
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston PostOpenStack Korea Community
 

Viewers also liked (20)

Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
웹크롤러 조사
웹크롤러 조사웹크롤러 조사
웹크롤러 조사
 
6장 지능형 웹 크롤링
6장 지능형 웹 크롤링6장 지능형 웹 크롤링
6장 지능형 웹 크롤링
 
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
[Ppt발표팁]효과적인 슬라이드 발표를 위한 10가지 팁
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
GStreamer-VAAPI: Hardware-accelerated encoding and decoding on Intel hardware...
 
U2 product For Wiseeco
U2 product For WiseecoU2 product For Wiseeco
U2 product For Wiseeco
 
Global mobile market report
Global mobile market reportGlobal mobile market report
Global mobile market report
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Pure Function and Honest Design
Pure Function and Honest DesignPure Function and Honest Design
Pure Function and Honest Design
 
Pitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONYPitfalls of Object Oriented Programming by SONY
Pitfalls of Object Oriented Programming by SONY
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
1, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v21, 빅데이터 시대의 인공지능 문동선 v2
1, 빅데이터 시대의 인공지능 문동선 v2
 
클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStack클라우드 네트워킹과 SDN 그리고 OpenStack
클라우드 네트워킹과 SDN 그리고 OpenStack
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes
[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes
[OpenStack Days Korea 2016] Track4 - OpenStack with Kubernetes
 
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
[OpenStack Days Korea 2016] Track3 - Powered by OpenStack, Power to do more w...
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)
 
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
[OpenStack Days Korea 2016] Track4 - 오픈스택을 공부합시다 - 커뮤니티 스터디 분과 소개
 
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
 

Similar to 141118 최창원 웹크롤러제작

삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자Young Min Shin
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들Sewon Ann
 
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기Sol Kim
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기Jay Park
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리Jay Park
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기iFunFactory Inc.
 
비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초Gihyo Joshua Jang
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1bingoori
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Channy Yun
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01SangHun Lee
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리Jay Park
 
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기2015 SW마에스트로 100+ 컨퍼런스
 
2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기Jay Park
 

Similar to 141118 최창원 웹크롤러제작 (20)

삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
 
XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기XECon + PHPFest 2014 XE 프로젝트 이야기
XECon + PHPFest 2014 XE 프로젝트 이야기
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리
 
7. html5 api
7. html5 api7. html5 api
7. html5 api
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초비 개발자를 위한 웹 개발 기초
비 개발자를 위한 웹 개발 기초
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리
 
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
2015 SW마에스트로 100+ 컨퍼런스_오픈스택 Swift로 시작하는 오픈소스 분석 삽질기
 
2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기
 

141118 최창원 웹크롤러제작

  • 1. 0 Python Web Crawler Development 인천대학교 OneScore 200901319 최창원
  • 2. 1 INDEX. 1 2 3 4 발표 소개 파이썬 소개 크롤러 소개 다운로더 &스크래퍼 5 다음 로그인 6 마무리 으리
  • 4. 3 파이썬이 뭔대? 거대하고 자동화된 크롤러를 제작하는 방법은 아닌 웹 크롤러를 만드는데 필요한 기초지식 전달 팬텀JS 사용? 소스코드 설명, 실습위주의 진행 오늘 할 내용
  • 5. 1991년 귀도 반 로섬에 의해 탄생 문법이 쉽고 직관적이다. built-in 라이브러리가 많아 할 수 있는게 매우 많다. 크로스 플랫폼을 지원한다. 4 Why Python?
  • 6. 인터프리터위에서 실행된다. C와 Java와 다른 동적 타이핑을 사용한다. 강력한 리플렉션이 가능하다. 5 Feature
  • 7. <모 Naver 카페> 6 Web Crawler
  • 8. <스포츠 기사> 7 Web Crawler
  • 9. <뉴스 기사> 8 Web Crawler
  • 10. World Wide Web을 통해 주고 받는 정보를 수집하는 자동화 소프트웨어 주로 다음과 같은 곳에 사용할 수 있습니다. • 기계학습 소프트웨어 개발 시 데이터를 수집할 경우 • 검색엔진을 위해 문서를 수집 할 경우 • 프로젝트에 필요한 컨텐츠를 수집할 때 • 개인적으로 필요한 정보를 주기적으로 수신 받고 싶을 때 9 Web Crawler
  • 12. 1) HTTP Requests (GET, POST) 2) HTTP Response (HTML, Javacript, ETC Files) Web Server 11 Web Crawler
  • 13. <hi-bogo.net 메인 페이지 접속 했을 때> 12 HTTP GET (Request)
  • 14. <hi-bogo.net 로그인 할 때> 13 HTTP POST (Request)
  • 17. Requests • 간편하고 쉬운 메서드 • HTTP 프로토콜 조작이 쉬움 • SSL 걱정 ㄴㄴ BeatifulSoup4 • HTML 파싱 트리 생성 • HTML 검색 및 순회(네비게이팅)가 쉬움 참고 http://pythonhackers.com/open-source/ http://www.crummy.com/software/BeautifulSoup/bs4/doc/ http://docs.python-requests.org/en/latest/ 16 Python Modules
  • 18. 17 네이버 인기 검색어 크롤링 ㄱㄱ
  • 19. 18 #-*- encoding: utf-8 -*- #실시간 검색어 import requests as rs import bs4 def getTopRank(): naver_url = 'http://www.naver.com' #1)요청 response = rs.get(naver_url) #2)응답으로 부터 HTML 추출 html_content = response.text.encode(response.encoding); ............ Requests 예제 (네이버 인기 검색어)
  • 20. 19 ............ BeautifulSoup 예제 #2)응답으로 부터 HTML 추출 html_content = response.text.encode(response.encoding); #3)HTML 파싱 navigator = bs4.BeautifulSoup(html_content) #4)네비게이터를 이용해 원하는 태그 리스트 가져오기 realRankTag = navigator.find_all(id='realrank') resultList = realRankTag[0].find_all('a') #5)키워드 추출 keywords = [item['title'] for item in resultList] #6)키워드 출력 for index, keyword in enumerate(keywords): resultText = '[%d위] %s'%(index,keyword.encode('utf-8')) print resultText.decode('utf-8').encode('euc-kr')
  • 21. 20 네이버 인기 검색어 크롤링 실습 https://github.com/qwefgh90/Web_Crawler naverTopRank.py
  • 22. 21 게시판 문서 다운로더 ㄱㄱ
  • 23. • 다운받을 파일이 너무 많아 일일히 클릭하기 지치고 힘들 때 ! • 배운거 활용해보고 싶을 때 • 잉여로울 때 사실 그다지 쓸모는 없습니다... 22 게시판 문서 다운로더
  • 24. 구현 절차 1. 파일 다운로드를 요청하는 부분을 분석 2. 똑같은 헤더와 페이로드를 만들어서 똑같은 요청을 다시 보내본다. 3. 요청한 파일이 응답에 제대로 담겨있는지? HTTP 응답코드가 200인지 확인? 4. 파일로 저장한다. 23 게시판 문서 다운로더
  • 25. 24 게시판 문서 다운로더 실습 https://github.com/qwefgh90/Web_Crawler delphi_downloader.py
  • 26. 25 그러나 항상 이처럼 쉬운 것은 아닙니다...!
  • 27. • 자바스크립트에 크롤링 할 내용이 숨겨져 있다면? (멜론 크롤링) • 분석해봤지만 스크립트가 단순하지 않을 때? (네이버 로그인) • 브라우저에서 매크로 돌리듯이 사용하고 싶을 때!! 26 The power of browsers
  • 28. 실제 브라우저를 사용해서 크롤링 해보자. 이때 Headless Browser인 PhantomJS는 매우 유용하다. 파이썬에서 PhantomJS를 다루기 위해선 Selenium 모듈이 필요하다. PhantomJS 란 ? 웹 표준을 따르는 headless Webkit 이다. 자바스크립트를 사용할 수 있으며 DOM, CSS, JSON, SVG등을 컨트롤 할 수 있다. Selenium 이란 ?? 브라우저와 드라이버로 연결되어 브라우저에서 하는 작업들을 자동화 시킬 수 있다. selenium은 웹 인터페이스로 동작하며 많은 브라우저가 selenium과 호환이 되고 PhantomJS와도 호환이 된다. 27 Browser
  • 29. Phantomjs.exe WebDriver Resources Web Server Browsing 28 Crawler with browser
  • 30. 29 네이버 로그인 후 세션취득 https://github.com/qwefgh90/SeleniumSample crawler.py

Editor's Notes

  1. 파이썬 소개 – 한 장 소개 크롤러 소개 – HTML, Javascript, DOM, HTTP 활용1 – 웹 사이트 파일 다운로더, 멜론 스크래퍼 제작 활용2 - 네이버 로그인 (팬텀JS)
  2. class ClassA(object):     email = ''     name = ''   strong = ClassA() strong.email = 'kelp[at]phate.org' strong.name = 'Kelp'   모듈, 클래스, 객체와 같은 언어의 요소가 내부에서 접근 for name in dir(strong):     attr = getattr(strong.__class__, name)     if not callable(attr) and name.find('__') != 0:         print('%s = %s' % (name, getattr(strong, name)))
  3. HTML, Javascript, DOM, HTTP
  4. HTML, Javascript, DOM, HTTP
  5. HTML, Javascript, DOM, HTTP
  6. 굳이 크롤링할 필요 없이 데이터를 제공해주는 기관도 있음
  7. HTML, Javascript, DOM, HTTP
  8. HTML, Javascript, DOM, HTTP
  9. HTML, Javascript, DOM, HTTP
  10. HTML, Javascript, DOM, HTTP
  11.  HTML은 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공한다.
  12. HTML, Javascript, DOM, HTTP
  13. HTML, Javascript, DOM, HTTP
  14. 간단한 예제 시연1
  15. 간단한 예제 시연1
  16. 간단한 예제 시연1
  17. 간단한 예제 시연1
  18. 간단한 예제 시연1
  19. 간단한 예제 시연1
  20. 간단한 예제 시연1
  21. 간단한 예제 시연1
  22. 간단한 예제 시연1
  23. HTML, Javascript, DOM, HTTP
  24. HTML, Javascript, DOM, HTTP
  25. HTML, Javascript, DOM, HTTP
  26. 간단한 예제 시연1