기초코딩강좌/파이썬(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)
코드 설명
- 라이브러리 가져오기: requests는 웹 페이지의 HTML을 가져오는 데 사용되고, BeautifulSoup은 HTML 파싱에 사용됩니다.
- 웹 페이지 요청 및 응답 확인:
- requests.get()으로 지정된 URL에 요청을 보내고, response.raise_for_status()로 응답 상태를 확인합니다. 오류가 발생하면 예외로 처리하여 프로그램이 중단되지 않도록 합니다.
- HTML 파싱:
- BeautifulSoup(response.text, 'html.parser')로 HTML을 파싱합니다.
- 뉴스 제목 추출:
- soup.find_all()을 사용하여 h2 태그와 특정 클래스 (headline 등)를 가진 태그를 찾고, headline.get_text().strip()으로 각 제목의 텍스트를 가져옵니다.
- 이 예시에서는 뉴스 사이트가 h2 태그와 headline 클래스를 사용한다고 가정했지만, 실제 웹사이트에서는 해당 요소의 구조를 확인하고 태그나 클래스 이름을 변경해야 할 수 있습니다.
- 결과 출력:
- 최신 뉴스 제목을 출력합니다. 여러 개의 제목이 있으면 각 제목이 번호와 함께 출력됩니다.
주의사항
- 웹사이트마다 HTML 구조가 다르기 때문에, 실제 크롤링할 웹사이트에 맞게 태그와 클래스 이름을 변경해야 합니다.
- 웹 크롤링 시, 해당 웹사이트의 robots.txt 규칙을 확인하여 크롤링이 허용된 영역에서만 수행해야 합니다.
- 크롤링은 웹사이트 서버에 부담을 줄 수 있으므로 요청 빈도나 횟수를 조절하여 서버에 과부하가 발생하지 않도록 주의해야 합니다.
728x90
반응형