(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)
더보기
도중 발생한 오류
환경 : 파이썬 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
'학습 > python' 카테고리의 다른 글
(python) 리스트 컴프리헨션(List Comprehension) (0) | 2023.04.24 |
---|---|
(python) tkinter 라이브러리 - GUI 툴킷 (0) | 2023.04.24 |
(python) .sort() 와 sorted() 차이 (0) | 2023.04.21 |
(python) ZeroDivisionError, try - except 블록 (0) | 2023.04.21 |
(python) for 반복문에서 자주 사용되는 함수들의 차이와 활용 (0) | 2023.04.21 |