파이썬을 사용한 웹 크롤링 기초: Requests, BeautifulSoup, Selenium
웹 크롤링(web crawling)이란 웹 페이지에서 원하는 데이터를 추출하는 기술을 말합니다. 파이썬은 크롤링에 필요한 라이브러리가 다양하게 존재하기 때문에 웹 크롤링을 쉽게 수행할 수 있습니다. 이번 포스트에서는 간단한 웹 크롤링을 위한 대표적인 파이썬 라이브러리로서 Requests, BeautifulSoup, 그리고 Selenium에 대해 알아봅니다.
- Requests
Requests는 HTTP 요청을 수행하고 응답을 가져오는 작업을 쉽게 처리할 수 있는 파이썬 라이브러리입니다.
설치 방법:
pip install requests
Requests 사용 예제:
import requests
url = 'https://www.example.com'
response = requests.get(url)
print(response.text)
- BeautifulSoup
BeautifulSoup은 HTML, XML 문서에서 원하는 데이터를 손쉽게 추출하기 위한 파이썬 라이브러리입니다. 주로 크롤링을 위해 Requests와 함께 사용됩니다.
설치 방법:
pip install beautifulsoup4
BeautifulSoup 사용 예제:
import requests
from bs4 import BeautifulSoup
url = 'https://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 웹페이지에서 원하는 태그를 찾아 데이터 추출
h1_tag = soup.find('h1')
print(h1_tag.text)
- Selenium
Selenium은 웹드라이버를 사용하여 웹 페이지를 로드하며 자바스크립트로 렌더링된 동적 페이지에서도 데이터를 크롤링할 수 있는 라이브러리입니다.
설치 방법:
pip install selenium
Selenium 사용 예제:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
url = 'https://www.example.com'
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get(url)
# 웹페이지에서 원하는 요소를 찾아 데이터 추출
search_box = driver.find_element_by_name('input-name') # name 속성으로 input 찾기
search_box.send_keys('검색어') # 텍스트 입력
search_box.send_keys(Keys.RETURN) # 엔터 키 누르기
# 크롤링 이후 웹드라이버 종료
driver.quit()
결론: 웹 크롤링 워크플로우는 대부분 특정 URL에 요청을 보내고 응답을 받는 과정(Requests), 그리고 HTML, XML에서 원하는 데이터를 추출하는 과정(BeautifulSoup)으로 구성됩니다. 자바스크립트를 사용한 동적 페이지의 경우에는, 웹 페이지의 상호작용을 통해 데이터가 로드되기 때문에 웹드라이버를 이용한 크롤링이 필요한데, 이 때 Selenium을 사용합니다. 이를 통해 원하는 데이터를 쉽게 가져올 수 있으며, 필요에 따라 다양한 분야에 활용할 수 있습니다.