본문 바로가기
language/Python

[Python] (Web Scraping, 데이터 크롤링) Selenium vs Scrapy vs Beautiful Soup

by 스파이디웹 2021. 1. 12.
728x90

scraping이란? crawling이란?

의미적으론 컴퓨터 소프트웨어 기술로 웹 사이트들에서 원하는 정보를 추출하는 것

원하는 데이터를 추출하다, 원하는 데이터를 긁어오다의 의미

 

차이로는

web crawling

  • 수많은 웹사이트들을 체계적으로 돌아다니면서 URL, 키워드 등을 수집하는 것
  • (보통 검색 엔진이 웹사이트를 인덱싱하기 위해서 사용됨.)

 

web scraping

  • 웹사이트에서 필요한 데이터를 긁어오는 것

Beautifulsoup

  • HTML, XML파일의 정보를 추출해내는 python library
  • python 내장 모듈인 request나 urllib을 이용해 HTML을 다운 받고, beautifulsoup으로 데이터를 추출
  • REST API에서 데이터를 가져올 때에도 사용됨
  • 서버에서 HTML을 다운받음
  • HTML을 파싱하고 데이터를 크롤링 하는데에만 쓰임

Selenium

  • 자동화 테스트(버튼 클릭, 스크롤 조작 등등)에 사용되는 프레임워크
  • 셀레늄을 이용한 크롤러는 웹 페이지에서 javascript 렌더링을 통해 생성되는 데이터들을 손쉽게 가져올 수 있음
  • 인터넷 브라우저를 통해 크롤링을 하는 개념이라, 실제 보여지는 웹 페이지의 전부를 가져올 수 있고, 디버깅 방법 또한 직관적
  • 웹 브라우저를 실제로 진행시키는 방법이기 때문에 속도도 많이 느리고, 메모리도 상대적으로 많이 차지
  • 멀티프로세스를 사용해서 여러 브라우저로 크롤링 하도록 하면 속도를 일정 부분 개선가능
  • 페이지의 단일 element에 접근하는 메소드

Scrapy

  • 파이썬으로 작성된 web crawling framework
  • 미들웨어, 파이프라인, javascript renderer(splash), proxy, xpath, CLI 등 다양한 기능들과 플러그인들을 사용할 수 있다.
  • 병렬처리, robots.txt 준수여부, 다운로드 속도 제어 등 설정 가능하다.
  • 플러그인들이 호환이 잘 안되는 편
  • 직접 BeautifulSoup나 lxml을 사용가능
  • XPath를 사용함으로써 복잡한 HTML소스를 쉽게 크롤링
  • HTML을 다운로드하고 데이터에 접근하여 저장

*lxml이란?

2021.01.12 - [Python] - [Python] lxml이란?

 

[Python] lxml이란?

XML 및 lxml이란? -XML이란 단순한 문자열을 넘어서서, 내부적으로 트리 구조를 가지고 있는 파일을 표현하기 위해 사용하는 마크업 언어입니다. -웹페이지를 보여주기 위해 사용되는 html 파일이 XML

spidyweb.tistory.com


참조:

velog.io/@zoeyul/webcrawling

728x90

댓글