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은 XPath를 지원하지 않아서
- 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를 지원한다.