(python) selenium 과 BeautifulSoup의 차이

2023. 4. 23. 16:33학습/python

크롤링을 배우며 selenium 과 BeatuifulSoup를 학습했는데 일단 selenium 을 베이스로 학습하면 더 도움이 된다고 하셨다. 그 이유는 직접 찾아 보라고 하였다.

이에 그 두 라이브러리의 차이를 정리하고자 한다.

 

BeautifulSoup
  • BeautifulSoup는 HTML과 XML 문서를 파싱하기 위한 라이브러리이다.
  • 주로 정적 웹 페이지에서 데이터를 추출하는 데 사용된다.
  • 웹 페이지의 HTML 소스코드를 다루기 쉬운 파이썬 객체로 변환하고, 원하는 데이터를 태그, 클래스, ID 등을 이용해 쉽게 추출할 수 있다.
  • JavaScript를 해석하거나 웹 페이지와 상호작용할 수 없다. 따라서 동적 웹 페이지의 데이터를 크롤링하는 데는 한계가 있다.
import requests
from bs4 import BeautifulSoup

url = "주소"
response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")
titles = soup.find_all("h1")

for title in titles:
    print(title.text)
더보기

도중 발생한 오류

RequestsDependencyWarning

환경 : 파이썬 3.7.9, win11, 가상환경아님

오류 :  RequestsDependencyWarning : urllib3 (1.26.15) or chardet (3.0.4) doesn't match a supported version!

원인 : 

해결방법 : pip install -U urllib3 requestsurllib3 (1.26.15) or chardet (3.0.4) doesn't match a supported version 

 

Selenium
  • Selenium은 웹 브라우저 자동화를 위한 라이브러리로, 실제 웹 브라우저를 조작할 수 있다.
  • 주로 동적 웹 페이지에서 데이터를 추출하는 데 사용된다.
  • JavaScript를 실행하여 웹 페이지의 데이터를 로드하거나, 버튼 클릭, 스크롤, 폼 작성 등의 상호작용을 통해 원하는 정보에 접근할 수 있다.
  • 웹 페이지와의 상호작용이 가능하다는 장점이 있지만, 비교적 느리고, 브라우저를 실행해야 하므로 자원 소모가 크다는 단점이 있다.
from selenium import webdriver
from selenium.webdriver.common.by import By

url = "https://news.naver.com/"
driver = webdriver.Chrome()
driver.get(url)

titles = driver.find_elements(By.CLASS_NAME, 'Nlist_item')

for title in titles:
    print(title.text)

 

 

위의 예시 코드들은 아주 간단한 것을 크롤링 했기에 차이점을 느끼기 힘들다.

 

정리한것으로 결론을 내자면

 

결론

웹 페이지와의 상호작용

BeautifulSoup 는 빠르나 상호작용 불가

Selenium는 느리나 상호작용 가능

으로 정리할수 있겠다.

 

 

728x90