파이썬

크롤링 요소 검색 비교 : Selenium vs BeautifulSoup

코샵 2024. 2. 2. 10:40
반응형

Selenium과 BeautifulSoup은 모두 웹 페이지를 자동화하는 데 사용되는 프레임워크입니다. 두 프레임워크 모두 웹 페이지에서 요소를 찾을 수 있는 find 함수를 제공합니다.

 

이 글에서는 Selenium과 BeautifulSoup에서 find 함수의 성능을 비교해 보겠습니다.

테스트 코드

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get('https://www.naver.com/')
html = BeautifulSoup(driver.page_source, 'html.parser')

start = time.time()
for i in range(1000) :
    driver.find_element(By.ID, 'query')
selenium_time = time.time() - start 

start = time.time()
for i in range(1000) :
    html.find(id = 'query')
beautifulsoup_time = time.time() - start

print(f'{selenium_time:.5f} {beautifulsoup_time:.5f}')

 

테스트 결과

테스트 결과는 다음과 같습니다.

Selenium: 3.00734 
BeautifulSoup : 0.18828

결과를 보면, BeautifulSoup의 find 함수가 Selenium의 find_element 함수보다 약 16배 빠릅니다.

 

성능 차이의 원인

Selenium의 find_element 함수는 브라우저의 웹 드라이버를 사용하여 웹 페이지를 로드하고, 페이지의 DOM 트리를 순회하여 요소를 찾습니다. 따라서, 웹 페이지의 크기가 크거나 DOM 트리가 복잡할수록 성능이 저하될 수 있습니다.

BeautifulSoup의 find 함수는 웹 페이지의 HTML 소스 자체를 사용하여 요소를 찾습니다. 따라서, 웹 페이지의 크기나 DOM 트리의 복잡도에 상관없이 일정한 성능을 유지할 수 있습니다.

결론

Selenium BeautifulSoup 모두 페이지를 자동화하는 유용한 프레임워크입니다. 하지만, 요소를 찾는 성능을 고려한다면, BeautifulSoup 나은 선택입니다.