본문 바로가기
IT&Tech

파이썬 웹 크롤링 배우기

by 퍼니홀릭 백과사전 2024. 10. 19.
반응형

웹 크롤링은 웹사이트에서 데이터를 자동으로 수집하는 기술로, 데이터 분석, 연구, 가격 모니터링, 콘텐츠 수집 등 다양한 용도로 사용됩니다. 파이썬은 간단하고 강력한 웹 크롤링 도구를 제공하는 인기 있는 프로그래밍 언어입니다. 이번 포스트에서는 파이썬 웹 크롤링의 기초부터 실전 예제까지 단계별로 살펴보겠습니다.

1. 웹 크롤링의 기본 개념

웹 크롤링이란?

웹 크롤링은 웹 페이지에 있는 정보를 자동으로 추출하는 기술입니다. 크롤러는 웹 페이지의 HTML 코드를 읽고, 필요한 데이터를 추출한 후, 이를 저장하는 방식으로 작동합니다. 이 과정은 수동으로 웹 페이지를 탐색하며 정보를 추출하는 것보다 훨씬 효율적입니다.

웹 크롤링의 주요 도구

  • HTML: 웹 페이지는 기본적으로 HTML로 구성됩니다. 크롤러는 이 HTML 문서를 분석하여 데이터를 추출합니다.
  • HTTP 요청: 웹 페이지에 접근하기 위해 HTTP 요청을 보내고, 응답을 받아와야 합니다.
  • 파싱: 응답받은 HTML 문서를 파싱하여 원하는 데이터 부분만 추출하는 과정을 거칩니다.

2. 웹 크롤링에 사용되는 파이썬 라이브러리

1) Requests

Requests는 파이썬에서 HTTP 요청을 쉽게 보낼 수 있게 해주는 라이브러리입니다. 웹 페이지에 접속해 HTML 소스를 가져오는 데 사용됩니다.

설치:

pip install requests

2) BeautifulSoup

BeautifulSoup은 HTML 및 XML 파일에서 데이터를 파싱하는 데 사용되는 라이브러리입니다. HTML 문서를 구조화하고, 원하는 정보를 쉽게 찾을 수 있게 도와줍니다.

설치:

pip install beautifulsoup4

3) Selenium

Selenium은 자바스크립트가 많이 사용된 웹 페이지에서도 동적으로 데이터를 추출할 수 있는 도구입니다. 브라우저를 자동으로 제어하여 페이지를 탐색할 수 있습니다.

설치:

pip install selenium

3. 웹 크롤링의 기본 흐름

  1. HTTP 요청 보내기: Requests 라이브러리를 사용해 웹 페이지에 요청을 보냅니다.
  2. HTML 문서 파싱: BeautifulSoup을 사용해 받은 HTML 문서를 분석하고, 원하는 데이터를 추출합니다.
  3. 데이터 저장: 추출한 데이터를 CSV나 데이터베이스에 저장하여 이후에 사용할 수 있게 합니다.

4. 파이썬 웹 크롤링 예제

이제, 간단한 웹 크롤링 예제를 통해 이 과정을 실습해보겠습니다. 예시로 네이버 뉴스에서 최신 기사를 수집하는 방법을 설명하겠습니다.

1) Requests와 BeautifulSoup을 이용한 웹 크롤링

import requests
from bs4 import BeautifulSoup

# 1. 웹 페이지 요청 보내기
url = 'https://news.naver.com'
response = requests.get(url)

# 2. HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')

# 3. 기사 제목 추출
news_headlines = soup.find_all('a', class_='lnk_hdline_article')

# 4. 추출한 데이터 출력
for idx, headline in enumerate(news_headlines, 1):
    print(f"{idx}. {headline.text.strip()}")

2) Selenium을 이용한 웹 크롤링 (동적 페이지)

자바스크립트로 생성된 데이터를 처리하려면 Selenium을 사용할 수 있습니다. 아래는 Selenium을 이용해 구글에서 'Python'을 검색하고 결과를 가져오는 코드입니다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 1. 웹 드라이버 설정
driver = webdriver.Chrome()

# 2. 구글 페이지 열기
driver.get('https://www.google.com')

# 3. 검색어 입력 및 검색
search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')
search_box.send_keys(Keys.RETURN)

# 4. 결과 출력
titles = driver.find_elements_by_css_selector('h3')
for title in titles:
    print(title.text)

# 5. 브라우저 닫기
driver.quit()

5. 웹 크롤링 주의사항

웹 크롤링을 할 때는 법적, 윤리적 문제를 고려해야 합니다. 많은 웹사이트는 크롤링을 허용하지 않거나 과도한 크롤링이 서버에 부담을 줄 수 있으므로, 웹사이트의 robots.txt 파일을 확인해 크롤링 가능 여부를 확인하는 것이 중요합니다.

  • robots.txt 파일: 사이트의 크롤링 정책을 명시한 파일로, 크롤러가 접근 가능한 URL을 지정합니다.
  • 크롤링 속도 조절: 사이트에 과부하를 주지 않도록 요청 간의 시간을 조정해야 합니다.
  • API 사용: 많은 사이트에서 데이터를 제공하는 API를 제공하므로, API를 사용하는 것이 더 나은 방법일 수 있습니다.

6. 마무리

파이썬을 이용한 웹 크롤링은 데이터를 자동으로 수집하는 데 매우 유용한 기술입니다. Requests, BeautifulSoup, Selenium 등의 라이브러리를 이용하면 누구나 쉽게 웹 크롤러를 작성할 수 있습니다. 이 가이드를 바탕으로 간단한 웹 크롤러를 만들어보고, 점차 더 복잡한 웹 페이지에서도 데이터를 추출할 수 있는 스킬을 쌓아보세요.


반응형