웹 크롤링의 정의
웹 크롤링(Web Crawling)이란 인터넷 상에 공개된 웹 페이지에서 데이터를 자동으로 수집하는 작업을 말합니다. 예를 들어 뉴스 사이트에서 기사 제목을 가져오거나, 쇼핑몰에서 상품 정보를 모으는 것이 대표적인 활용 예입니다.
파이썬은 웹 크롤링을 손쉽게 할 수 있도록 다양한 라이브러리를 제공합니다. 대표적으로 많이 사용하는 두 가지는 requests와 BeautifulSoup입니다.
• requests: 웹 페이지의 HTML 코드를 가져오는 데 사용
• BeautifulSoup: HTML 코드에서 원하는 데이터를 추출하는 데 사용
웹 크롤링은 단순한 코드만으로도 놀라운 자동화를 가능하게 해 주기 때문에 많은 사람들이 활용하고 있습니다. 다만, 웹사이트의 이용 규칙(robots.txt)을 지켜야 하며, 무단 수집은 법적인 문제가 발생할 수 있으므로 주의가 필요합니다.
크롤링은 웹 개발자나 데이터 분석가에게 매우 유용한 기술이며, 초보자도 기본적인 구조를 익히면 손쉽게 시작할 수 있습니다.
파이썬으로 간단한 크롤러 만들기
이제 실제로 파이썬을 사용해 간단한 웹 크롤러를 만들어보겠습니다. 예를 들어, 네이버 뉴스 페이지에서 기사 제목을 가져오는 예제를 살펴보겠습니다.
1. 필요한 라이브러리 설치
먼저 requests와 beautifulsoup4 패키지를 설치해야 합니다. 터미널(또는 명령 프롬프트)에서 다음 명령어를 입력하세요:
pip install requests beautifulsoup4
2. HTML 가져오기
import requests
url = "https://news.naver.com"
response = requests.get(url)
print(response.text) # HTML 코드 출력
이 코드는 해당 웹사이트의 HTML 전체 코드를 가져와 출력합니다. HTML 구조가 이해되면 원하는 정보를 추출할 수 있습니다.
3. BeautifulSoup으로 정보 추출하기
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
titles = soup.find_all("a") # 모든 링크 태그를 찾음
for title in titles[:5]: # 앞의 5개만 출력
print(title.get_text().strip())
HTML 코드에서 <a> 태그를 찾아 그 안의 텍스트를 추출합니다. 뉴스 제목, 링크, 가격 등 원하는 정보는 웹 페이지 구조에 따라 추출할 수 있습니다. 실제 사이트는 구조가 복잡하므로, 크롬 개발자 도구(오른쪽 클릭 → “요소 검사”)를 활용해 원하는 HTML 요소의 태그와 클래스를 정확히 파악한 후 코드에 적용하는 것이 중요합니다.
크롤링 실습 예제와 응용 아이디어
웹 크롤링을 조금 더 깊이 이해하기 위해 다양한 실습 예제를 접해보는 것이 좋습니다. 아래는 초보자에게 적합한 실습 예제들입니다.
1. 위키백과에서 특정 단어 정보 가져오기
url = "https://ko.wikipedia.org/wiki/파이썬"
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
summary = soup.find("p").get_text()
print("파이썬 위키백과 요약:", summary)
위키백과 페이지의 첫 번째 문단을 가져와 요약 정보를 출력합니다.
2. 검색어 기반 뉴스 기사 제목 수집하기
search = "날씨"
url = f"https://search.naver.com/search.naver?query={search}"
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
for tag in soup.select("a.news_tit"):
print(tag.get_text())
사용자가 입력한 검색어를 바탕으로 네이버 뉴스 검색 결과의 기사 제목을 수집합니다.
3. 실시간 환율 정보 가져오기
url = "https://finance.naver.com/marketindex/exchangeList.naver"
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
rows = soup.select("table.tbl_exchange tbody tr")
for row in rows:
tds = row.select("td")
print(tds[0].get_text(), tds[1].get_text())
네이버 금융의 환율 정보를 표 형태로 가져와 국가명과 환율을 출력하는 프로그램입니다. 이 외에도 영화 순위, 책 베스트셀러, 날씨 정보, 쇼핑몰 상품 가격 등 다양한 정보를 자동으로 수집해볼 수 있습니다. 크롤링을 통해 수집한 데이터를 엑셀 파일로 저장하거나 시각화하면 더욱 실용적인 프로그램으로 확장할 수 있습니다. 웹 크롤링은 단순한 자동화를 넘어서 데이터 수집과 분석의 출발점이 되며, 실제 업무나 프로젝트에도 적용할 수 있는 실용적인 기술입니다. 초보자일수록 크롬 개발자 도구로 HTML 구조를 자주 분석하고, 여러 사이트를 크롤링해보며 실력을 키우는 것이 좋습니다.