Python/Crawling

[Crawling] Beautiful Soup 와 Selenium 선택 기준

yubi5050 2023. 6. 10. 18:04

Selenium vs Beautiful Soup

Selenium과 Beautiful Soup는 웹 스크래핑과 웹 자동화를 위해 사용되는 Python 라이브러리

 

둘 중에 크롤링을 위해 선택하는 기준은 목적성에 있으며, 때에 따라서는 혼합해서 사용도 가능하다.

 

Selenium

웹 자동화를 위해 사용되는 도구

 

웹 브라우저를 자동으로 제어 (ex. 클릭 등)하고, 사용자의 동작을 시뮬레이션을 통해 웹 어플리케이션 테스트 및 정보 스크래핑에 사용된다.

 

웹 브라우저를 제어하기 때문에, JavaScript로 작성된 동적 웹 페이지를 다룰 수 있다.

웹 요소를 조작 하고 제어하기 위해 XPath 또는 CSS Selector(선택자)를 사용 가능하다.

 

ex) 만약 페이지가 단순 html, css가 아닌 JavaScript에 의해 동적으로 랜딩되는 화면을 스크래핑 할 경우 Selenium을 사용해야 한다.

 

Beautiful Soup

웹 스크래핑을 통해 데이터를 추출하는데 사용

 

주로 HTML 및 XML 웹 페이지 혹은 문서를 다운로드하고, 파싱 및 분석하여 원하는 데이터를 추출하는데 사용된다. 

 

내부적으로는 파이썬의 파싱 라이브러리인 lxml이나 html.parser를 사용하여, html dom 형태에 대해 분석할 수 있고, 사용자가 지정한 특정 태그(tag), 속성(attribute), 클래스(class)등을 지정하여 원하는 데이터를 선택 가능하다.

 

주로 데이터 스크래핑에 활용된다.

 

추가) 만약 Beautiful Soup를 통해서  특정 페이지를 스크래핑시 다음과 같은 에러가 나타나면, 해당 페이지는 Javascript의 동적 로딩을 못읽어서 생기는 문제로 Selenium으로 페이지를 우선 로딩해야 함. 

We 're sorry but web-pc doesn\'t work properly without JavaScript enabled. Please enable it to continue

 

결론

  • 웹 테스팅 or 자동화 -> Selenium
  • 웹 페이지의 단순 스크래핑 -> Beautiful Soup
  • 혼합 : Selenium으로 웹 페이지를 동적으로 불러오고, Beautiful Soup를 통해 스크래핑