Skip to main content

BeautifulSoup vs Selenium vs Puppeteer 비교

동적인 페이지를 크롤링 해야하는데, 여러 가지 도구 중 어떤 걸 사용해야 할 지 몰랐다. 그래서 각각의 크롤러 도구를 하나씩 비교해보려 한다.


BeautifulSoup란?

Python으로 작성된 웹 페이지 크롤링 라이브러리로, 웹 스크래핑과 데이터 마이닝 등에 사용된다. 특징으로는 다음과 같다.

  • 여러 가지 parser(ex. html.parser, lxml, html5lib)를 지원한다.
    • 참고로 BeautifulSoup은 XPath를 지원하지 않아서 lxml라는 외부 라이브러리를 사용한다. (게다가 lxml parser가 html.parser 보다 빠르다.)
    • (cf. XPath의 시작 index는 1이다!)
  • BeautifulSoup은 JavaScript를 실행하지 않기 때문에 동적인 페이지를 크롤링 할 수 없다.(웹 페이지의 콘텐츠가 런타임 시에 결정되기 때문에)
    • 이를 Selenium과 함께 사용하면 동적인 웹 페이지를 수집할 수 있다.

Selenium이란?

Selenium은 주로 웹 애플리케이션을 테스트 할 때 사용하는 자동화 도구로, 웹 스크래핑과 테스트 자동화에 사용된다. 특징으로는 다음과 같다.

  • 여러가지 언어(ex. Python, Java, C#, Ruby)를 지원하며, 여러 웹 브라우저(ex. Chrome, Firefox, Edge, Safari)에서 동작될 수 있다.
  • JavaScript를 실행해 웹 페이지의 동적인 콘텐츠를 가져오고, 데이터를 수집할 수 있다.
  • XPath를 지원한다.

Puppeteer란?

Puppeteer는 Google에서 개발한 Node.js 라이브러리로, Chrome 브라우저를 제어할 수 있다. 웹 스크래핑과 웹 사이트 자동화, 테스트 자동화 등에 사용된다. 특징으로는 다음과 같다.

  • JavaScript를 실행해 웹 페이지의 동적인 콘텐츠를 가져오고, 데이터를 수집할 수 있다.
  • XPath를 지원한다.
Related Links