기초코딩강좌/파이썬(Python) 기초 강좌

파이썬(Python) 예제 : 간단한 웹 크롤러

블러그운영자 2024. 11. 16. 23:07
반응형

여기 파이썬으로 간단한 웹 크롤러를 만드는 예제를 소개합니다. 이 웹 크롤러는 BeautifulSoup과 Requests 라이브러리를 사용하여 웹 페이지에서 특정 정보를 수집합니다. 이 예제에서는 예를 들어 뉴스 제목을 가져오는 간단한 웹 크롤러를 만들어 보겠습니다.

필요한 라이브러리 설치

웹 크롤러를 만들기 위해 requests와 beautifulsoup4 라이브러리가 필요합니다. 아래 명령어로 설치할 수 있습니다.

pip install requests beautifulsoup4

 

웹 크롤러 코드 예제

이 예제에서는 뉴스 웹사이트에서 최신 뉴스 제목을 가져오는 웹 크롤러를 만들어 봅니다.

import requests
from bs4 import BeautifulSoup

# 웹 크롤링 함수 정의
def get_latest_news(url):
    try:
        # 웹 페이지 요청
        response = requests.get(url)
        response.raise_for_status()  # 응답 코드가 성공적(200)이지 않으면 예외 발생

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

        # 뉴스 제목 추출 (뉴스 사이트에 따라 클래스 이름 변경 필요)
        # 예시: <h2> 태그나 특정 클래스 속성을 가진 태그에서 뉴스 제목을 추출
        headlines = soup.find_all('h2', class_='headline')  # 예시: 태그와 클래스 지정

        print("최신 뉴스 제목:")
        for index, headline in enumerate(headlines, 1):
            print(f"{index}. {headline.get_text().strip()}")

    except requests.exceptions.RequestException as e:
        print("웹 페이지 요청 중 오류 발생:", e)

# 사용할 웹사이트 URL 지정 (예시 URL 변경 가능)
url = "https://example-news-website.com/latest"  # 실제 뉴스 사이트 URL로 변경

# 뉴스 가져오기 함수 호출
get_latest_news(url)

 

코드 설명

  1. 라이브러리 가져오기: requests는 웹 페이지의 HTML을 가져오는 데 사용되고, BeautifulSoup은 HTML 파싱에 사용됩니다.
  2. 웹 페이지 요청 및 응답 확인:
    • requests.get()으로 지정된 URL에 요청을 보내고, response.raise_for_status()로 응답 상태를 확인합니다. 오류가 발생하면 예외로 처리하여 프로그램이 중단되지 않도록 합니다.
  3. HTML 파싱:
    • BeautifulSoup(response.text, 'html.parser')로 HTML을 파싱합니다.
  4. 뉴스 제목 추출:
    • soup.find_all()을 사용하여 h2 태그와 특정 클래스 (headline 등)를 가진 태그를 찾고, headline.get_text().strip()으로 각 제목의 텍스트를 가져옵니다.
    • 이 예시에서는 뉴스 사이트가 h2 태그와 headline 클래스를 사용한다고 가정했지만, 실제 웹사이트에서는 해당 요소의 구조를 확인하고 태그나 클래스 이름을 변경해야 할 수 있습니다.
  5. 결과 출력:
    • 최신 뉴스 제목을 출력합니다. 여러 개의 제목이 있으면 각 제목이 번호와 함께 출력됩니다.

주의사항

  • 웹사이트마다 HTML 구조가 다르기 때문에, 실제 크롤링할 웹사이트에 맞게 태그와 클래스 이름을 변경해야 합니다.
  • 웹 크롤링 시, 해당 웹사이트의 robots.txt 규칙을 확인하여 크롤링이 허용된 영역에서만 수행해야 합니다.
  • 크롤링은 웹사이트 서버에 부담을 줄 수 있으므로 요청 빈도나 횟수를 조절하여 서버에 과부하가 발생하지 않도록 주의해야 합니다.
728x90
반응형