Crawling
Python
Selenium
Sylvy
목차
• Crawling 소개
• Python 소개
• Selenium 소개
• 예제
Crawling
• 정의
• 의의
• 주의
• 웹페이지를 그대로 긁어와 필요한 데이터를 정형하는 행위
• 혹은 검색엔진들의 인덱싱 목적으로 활용
• 자동화를 통한 시간+인력 절약
• 무분별한 상업적 이용 자제
• 대상 서버에 부담 최소화
• Robots.txt 확인(의무X, 가급적 지킬 것)
Python
• 특징
• 활용분야
• 문법이 쉽고 간단
• 다양한 분야에서 활용 => 다양한 라이브러리
• 크롤링, 데이터분석, 인공지능, 웹서버(Django/Flask)
Selenium
• 정의
• 장점
• 단점
• 웹 어플리케이션 테스트를 위한 포터블 프레임워크
• JavaScript가 동적으로 만든 데이터를 크롤링
• 대상 사이트의 다양한 HTML 요소들에 클릭/키보드 입력 등의
이벤트를 줄 수 있음
• 브라우저를 직접 동작시켜(ex.ChromeDriver) 실제 사용자
동작을 직접 시뮬레이션=>컴퓨터 사양에 따라 동작시간이
다름
• 브라우저를 직접 켜서 작동=>자원을 많이 잡아먹음
Selenium vs
BeautifulSoup
정적수집 동적수집
사용패키지 urllib/requests selenium
수집 정적인 웹페이지 정적,동적 웹페이지
수집 속도 빠름(별도 페이지 조작 필요x) 상대적으로 느리다
파싱 패키지 beautifulsoup beautifulsoup/selenium
F12 개발자도구
1. driver=webdriver.Chrome(크롬드라이버 경로)
2. driver.get(크롤링대상사이트)
3. x = driver.find_element(s)_by_xpath(or id or classname or tagname…)(해당경로or id or 이름 등등…)
4. print(x.text) or x.click() or x.find_element_....
5. driver.switch_to_window를 통한 팝업창 제어

Selenium basics for crawling web data with Python

  • 1.
  • 2.
    목차 • Crawling 소개 •Python 소개 • Selenium 소개 • 예제
  • 3.
    Crawling • 정의 • 의의 •주의 • 웹페이지를 그대로 긁어와 필요한 데이터를 정형하는 행위 • 혹은 검색엔진들의 인덱싱 목적으로 활용 • 자동화를 통한 시간+인력 절약 • 무분별한 상업적 이용 자제 • 대상 서버에 부담 최소화 • Robots.txt 확인(의무X, 가급적 지킬 것)
  • 4.
    Python • 특징 • 활용분야 •문법이 쉽고 간단 • 다양한 분야에서 활용 => 다양한 라이브러리 • 크롤링, 데이터분석, 인공지능, 웹서버(Django/Flask)
  • 5.
    Selenium • 정의 • 장점 •단점 • 웹 어플리케이션 테스트를 위한 포터블 프레임워크 • JavaScript가 동적으로 만든 데이터를 크롤링 • 대상 사이트의 다양한 HTML 요소들에 클릭/키보드 입력 등의 이벤트를 줄 수 있음 • 브라우저를 직접 동작시켜(ex.ChromeDriver) 실제 사용자 동작을 직접 시뮬레이션=>컴퓨터 사양에 따라 동작시간이 다름 • 브라우저를 직접 켜서 작동=>자원을 많이 잡아먹음
  • 6.
    Selenium vs BeautifulSoup 정적수집 동적수집 사용패키지urllib/requests selenium 수집 정적인 웹페이지 정적,동적 웹페이지 수집 속도 빠름(별도 페이지 조작 필요x) 상대적으로 느리다 파싱 패키지 beautifulsoup beautifulsoup/selenium
  • 7.
    F12 개발자도구 1. driver=webdriver.Chrome(크롬드라이버경로) 2. driver.get(크롤링대상사이트) 3. x = driver.find_element(s)_by_xpath(or id or classname or tagname…)(해당경로or id or 이름 등등…) 4. print(x.text) or x.click() or x.find_element_.... 5. driver.switch_to_window를 통한 팝업창 제어

Editor's Notes

  • #2 안녕하세요, 디지털3단계 때 선사 사이트 크롤링을 맡았고, 그 경험, 기술을 간략하게나마 공유하기 위해 이 자리를 마련했습니다! 언어는 Python, 라이브러리는 Selenium을 택해 진행했습니다!
  • #3 크롤링, 파이썬, 셀레니움에 대한 간단한 소개, 설명을 한 후 예제코드를 살펴보겠습니다
  • #4 User-agent: 제어할 로봇의 User-Agent Disallow: / -> 모든 문서에 대한 접근 차단 Allow: /$ -> 첫 페이지에 대해서만 허가
  • #6 Selenium은 웹 어플리케이션 테스트를 위한 포터블 프레임워크입니다. 실제로 크롬 드라이버를 켜서 원하는 동작을 수행하고, 그에 따라 표시되는 사이트의 요소들을 긁어 올 수 있습니다. Ppt를 보시다시피, 이러한 장점과 이러한 단점들이 있습니다. 근데 왜 이런 단점이 있음에도 사용하느냐
  • #7 정적 수집은 멈춰있는 페이지의 html을 requests 혹은 urllib패키지를 이용해 가져와서 beautifulsoup패키지로 파싱하여 원하는 정보를 수집한다. 여기서 파싱(parsing)이란 복잡한 html 문서를 잘 분류, 정리하여 다루기 쉽게 바꾸는 작업 바로 해당 url의 html을 받아와서 수집하기 때문에 수집 속도가 빠르다는 장점이 있지만, 여기저기 모두 사용할 수 있는 범용성은 떨어진다. 서버에서 HTML을 다운 받기 때문에 서버사이드 렌더링을 사용하지 않는 SPA 사이트나, javascipt 렌더링을 필요로 하는 사이트들은 크롤링하기 까다롭다. 동적 수집은 계속 움직이는 페이지를 다루기 위해서 selenium패키지로 chromdriver를 제어한다. 특정 url로 접속해서 로그인을 하거나 버튼을 클릭하는 식으로 원하는 정보가 있는 페이지까지 도달한다. 동적 수집의 특징은 정적 수집과 반대라고 생각하시면 됩니다. 브라우저를 직접 조작하고 브라우저가 실행될때까지 기다려주기도 해야해서 그 속도가 느리다는 특징이있습니다. 하지만 이는 상대적인 것이지사람이 직접하는 것보다는 훨씬 빠르니 기본적으로 동적 수집을 하고 필요시 정적 수집 방식을 이용하는게 어떨까 하는 것이 개인적인 생각입니다. 정적/동적 웹페이지에 모두 적용이 가능하다. 자동화 테스트(버튼 클릭, 스크롤 조작 등등)에 사용되는 프레임워크이다. 셀레늄을 이용한 크롤러는 웹 페이지에서 javascript 렌더링을 통해 생성되는 데이터들을 손쉽게 가져올 수 있다. 인터넷 브라우저를 통해 크롤링을 하는 개념이라, 실제 보여지는 웹 페이지의 전부를 가져올 수 있고, 디버깅 방법 또한 직관적이다. 웹 브라우저를 실제로 진행시키는 방법이기 때문에 속도도 많이 느리고, 메모리도 상대적으로 많이 차지한다. 멀티프로세스를 사용해서 여러 브라우저로 크롤링 하도록 하면 속도를 일정 부분 개선할 수 있다.
  • #8 다음과 같이 main.py를 구성하고, chromedriver 최신버전을 다운받아 넣어줍니다. XPath란 XML Path Language XPath는 XML 문서를 탐색하기 위해 경로 표현식(path expression)을 사용합니다.