반응형
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이 더 나은 선택입니다.
'파이썬' 카테고리의 다른 글
SQLAlchemy: 데이터베이스 툴킷 (3) | 2024.11.13 |
---|---|
ChatGPT API의 function_call (1) | 2024.02.11 |
ChatGPT API를 활용한 똑똑한 채팅봇 만들기: OpenAI (1) | 2024.02.09 |