Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads.
웹 크롤링 Web Scraping
의 이해와 활용
이민철
다루는 내용
1. 웹 크롤링
 웹 크롤링 이란?
 크롤링은 어디에 쓰일까
2. Web의 이해
 Web page
 서버와 클라이언트
 웹 페이지가 우리 눈에 보이기까지
 HTTP
 Python으로 HTTP r...
웹 크롤링 Web Scraping
웹 사이트에서 원하는 정보를 자동으로 수집하는 것
크롤링은 어디에 쓰일까
크롤링 왜??
구글
수 많은 웹 사이트
를 크롤링하여 검
색서비스 제공
쿠차
각종 소셜커머스 사이트
를 크롤링 하여 최저가
정보 제공
지진희알림
각종 커뮤니티에서 지진에 관련된 글
을 수집하여 지진 발생시 텔레그램으
로 알림
Web 의 이해
주소창에
www.naver.com
를 치면 어떤 일
이 일어날까
웹 페이지 Web page
• 웹 상의 문서
• 우리가 보고 있는 웹 사이트들은 문서로 이루어져 있다.
• 텍스트, 그림, 소리, 동영상 등을 표현 가능
• 대부분 HTML 이라는 언어로 이루어져 있음
서버와 클라이언트
Client
• 서비스를 요청하는 프로그램
Server
• 요청에 대해 응답을 해주는 프로그램
응답
요청
웹 페이지가 우리 눈에 보이기 까지
1. 클라이언트가 서버에게 contents를 요청한다.
2. 서버는 요청 받은 contents를 클라이언트에게 건네준다.
3. 브라우저는 서버에게 받은 HTML을 해석하여 화면에 보여...
HTTP Hyper Text Transfer Protocol
• 서버와 클라이언트 사이에서 정보를 주고 받기 위한 규약
• 시작줄, 헤더(Header), 본문(Body) 으로 이루어져 있음
• 9개의 메소드가 존재하지만...
GET POST
• Body에 query data가 들어간다.
• 링크 / 북마크가 불가능하다.
• 데이터 길이에 제한이 없다.
• URL을 가지지 않으므로 주로 중요한 데이
터를 다룰 때 사용한다.
• Body 없이 ...
Python 으로 HTTP request 보내기
• urllib
 Python built-in module
 간편하게 HTTP request를 보낼 수 있음
 로그인 및 세션을 유지하기가 번거로움
• mechani...
requests 설치
• Pip 로 설치 가능
pip install requests
requests로 HTTP request 보내기
GET
import requests
url = "https://www.naver.com/"
response = requests.get(url)
print(response....
파싱 (parsing)
• 가공되지 않은 문자열에서 필요한 부분을 추출하여 의미있는
(구조화된) 데이터로 만드는 과정
정규표현식 regular expression
• 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용
• Python 에서는 re라는 이름의 built-in module 이 존재
문자 클래스 설명
d 숫자와 매치 ; [...
<a href="/watch?v=d9IxdwEFk1c" class="yt-uix-tile-link yt-ui-ellipsis
yt-ui-ellipsis-2 polymer-title-link yt-uix-sessionli...
Beautiful Soup
https://www.crummy.com/software/BeautifulSoup/
• 파싱을 도와주는 강력한 python 라이브러리
• 정규식을 작성할 필요 없이 tag, id, class ...
<a href="/watch?v=d9IxdwEFk1c" class="yt-uix-tile-link yt-ui-ellipsis
yt-ui-ellipsis-2 polymer-title-link yt-uix-sessionli...
Beautiful Soup 설치
• Pip 로 설치 가능
pip install beautifulsoup4
How to make 크롤러
1. 브라우저를 조종하여 데이터를 얻는 방법
• Selenium
• 브라우저를 직접 띄우기 때문에 css나 image와 같이 구지 필요 없는
데이터도 다운로드 받게 됨 -> 속도가 느리다.
...
Selenium
• 웹 브라우저 자동화 tool
• Java, C#, Perl , PHP, Python , Ruby 등 다양한 언어 지원
• 직접 브라우저를 실행하여 python code로 mouse click,
key...
Scrapy
• 링크를 타고 다른 페이지로 이동하며 scraping 하는 web spider
제작에 용이
• Django 처럼 프로젝트를 생성하면 기본 템플릿을 생성해줌
• 이 역시 documentation이 굉장히 잘...
웹 크롤링 (Web scraping) 의 이해
Upcoming SlideShare
Loading in …5
×

웹 크롤링 (Web scraping) 의 이해

16,173 views

Published on

for django girls study

Published in: Software
  • Be the first to comment

웹 크롤링 (Web scraping) 의 이해

  1. 1. 웹 크롤링 Web Scraping 의 이해와 활용 이민철
  2. 다루는 내용 1. 웹 크롤링  웹 크롤링 이란?  크롤링은 어디에 쓰일까 2. Web의 이해  Web page  서버와 클라이언트  웹 페이지가 우리 눈에 보이기까지  HTTP  Python으로 HTTP request 보내기 3. 파싱 (parsing)  re  BeautifulSoup 4. How to make 크롤러  크롤링하는 여러가지 방법  Selenium  requests  scrapy 1 2 3 4
  3. 웹 크롤링 Web Scraping 웹 사이트에서 원하는 정보를 자동으로 수집하는 것
  4. 크롤링은 어디에 쓰일까 크롤링 왜??
  5. 구글 수 많은 웹 사이트 를 크롤링하여 검 색서비스 제공
  6. 쿠차 각종 소셜커머스 사이트 를 크롤링 하여 최저가 정보 제공
  7. 지진희알림 각종 커뮤니티에서 지진에 관련된 글 을 수집하여 지진 발생시 텔레그램으 로 알림
  8. Web 의 이해 주소창에 www.naver.com 를 치면 어떤 일 이 일어날까
  9. 웹 페이지 Web page • 웹 상의 문서 • 우리가 보고 있는 웹 사이트들은 문서로 이루어져 있다. • 텍스트, 그림, 소리, 동영상 등을 표현 가능 • 대부분 HTML 이라는 언어로 이루어져 있음
  10. 서버와 클라이언트 Client • 서비스를 요청하는 프로그램 Server • 요청에 대해 응답을 해주는 프로그램 응답 요청
  11. 웹 페이지가 우리 눈에 보이기 까지 1. 클라이언트가 서버에게 contents를 요청한다. 2. 서버는 요청 받은 contents를 클라이언트에게 건네준다. 3. 브라우저는 서버에게 받은 HTML을 해석하여 화면에 보여준다. 요청 응답 해석
  12. HTTP Hyper Text Transfer Protocol • 서버와 클라이언트 사이에서 정보를 주고 받기 위한 규약 • 시작줄, 헤더(Header), 본문(Body) 으로 이루어져 있음 • 9개의 메소드가 존재하지만 주로 GET과 POST만 쓰인다.
  13. GET POST • Body에 query data가 들어간다. • 링크 / 북마크가 불가능하다. • 데이터 길이에 제한이 없다. • URL을 가지지 않으므로 주로 중요한 데이 터를 다룰 때 사용한다. • Body 없이 Header만으로 전송된다. • 링크 / 북마크 가 가능하다. • 요청에 길이 제한이 있다. • URL의 ? 뒤에 쿼리 문자열이 올 수 있다. • 쿼리 문자열은 key와 value를 가지고 있 으며, 각 쿼리는 & 로 구분한다. /test/demo_form.php?name1=value1&name2=value2
  14. Python 으로 HTTP request 보내기 • urllib  Python built-in module  간편하게 HTTP request를 보낼 수 있음  로그인 및 세션을 유지하기가 번거로움 • mechanize  urllib 기반  세션을 유지하기가 용이함  간편하게 html form을 채우고 submit을 보낼 수 있음  Python2 만 지원 • requests  간편하게 HTTP request를 보낼 수 있음  세션을 유지하기가 용이함  python2 / python3 완벽 지원  코드가 간결하고 documentation이 잘 되어 있음
  15. requests 설치 • Pip 로 설치 가능 pip install requests
  16. requests로 HTTP request 보내기 GET import requests url = "https://www.naver.com/" response = requests.get(url) print(response.text) POST import requests url = "https://httpbin.org/post" data = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url, data) print(response.text)
  17. 파싱 (parsing) • 가공되지 않은 문자열에서 필요한 부분을 추출하여 의미있는 (구조화된) 데이터로 만드는 과정
  18. 정규표현식 regular expression • 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용 • Python 에서는 re라는 이름의 built-in module 이 존재 문자 클래스 설명 d 숫자와 매치 ; [0-9] w 문자 + 숫자와 매치 . n를 제외한 모든 문자와 매치 + (반복) + 바로 앞에 있는 문자가 1번 이상 반복됨 * (반복) * 바로 앞에 있는 문자가 0번 이상 반복됨 자주 사용되는 정규식
  19. <a href="/watch?v=d9IxdwEFk1c" class="yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 polymer-title-link yt-uix-sessionlink spf-link " data- sessionlink="itct=CF0Q3DAYACITCLunmMmludMCFQbTWAod- eQDIyj0JFIJ7JWE7J207Jyg" title="[MV] IU(아이유) _ Palette(팔레트) (Feat. G-DRAGON)" rel="spf-prefetch" aria-describedby="description- id-746662" dir="ltr">[MV] IU(아이유) _ Palette(팔레트) (Feat. G- DRAGON)</a> <a href="(.+?)".*title="(.+?)".*>pattern text
  20. Beautiful Soup https://www.crummy.com/software/BeautifulSoup/ • 파싱을 도와주는 강력한 python 라이브러리 • 정규식을 작성할 필요 없이 tag, id, class 등의 이름으로 쉽게 파 싱 가능 • 쉽고 간결하며, documentation이 매우 잘 되어 있음
  21. <a href="/watch?v=d9IxdwEFk1c" class="yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 polymer-title-link yt-uix-sessionlink spf-link " data- sessionlink="itct=CF0Q3DAYACITCLunmMmludMCFQbTWAod- eQDIyj0JFIJ7JWE7J207Jyg" title="[MV] IU(아이유) _ Palette(팔레트) (Feat. G-DRAGON)" rel="spf-prefetch" aria-describedby="description- id-746662" dir="ltr">[MV] IU(아이유) _ Palette(팔레트) (Feat. G- DRAGON)</a> text
  22. Beautiful Soup 설치 • Pip 로 설치 가능 pip install beautifulsoup4
  23. How to make 크롤러 1. 브라우저를 조종하여 데이터를 얻는 방법 • Selenium • 브라우저를 직접 띄우기 때문에 css나 image와 같이 구지 필요 없는 데이터도 다운로드 받게 됨 -> 속도가 느리다. • 동적 페이지도 크롤링이 가능하다. (javascript 실행 가능) 2. HTTP request를 날려서 데이터를 얻는 방법 • requests, scrapy • 속도가 빠르다. • Javascript 실행이 불가능함 -> Web page에 대한 사전 분석이 필요하 다.
  24. Selenium • 웹 브라우저 자동화 tool • Java, C#, Perl , PHP, Python , Ruby 등 다양한 언어 지원 • 직접 브라우저를 실행하여 python code로 mouse click, keyboard input 등의 event를 발생시킴 • 실제 브라우저로 실행한 것과 동일한 값을 얻을 수 있음 • 엄청 느림
  25. Scrapy • 링크를 타고 다른 페이지로 이동하며 scraping 하는 web spider 제작에 용이 • Django 처럼 프로젝트를 생성하면 기본 템플릿을 생성해줌 • 이 역시 documentation이 굉장히 잘 되어 있다. https://docs.scrapy.org/en/latest/ scrapy startproject 프로젝트명

×