>백엔드 개발 >파이썬 튜토리얼 >단순화된 웹 스크래핑: BeautifulSoup을 사용하여 기사 제목 추출

단순화된 웹 스크래핑: BeautifulSoup을 사용하여 기사 제목 추출

DDD
DDD원래의
2024-12-20 13:23:09341검색

Web Scraping Simplified: Extracting Article Titles with BeautifulSoup

단순화된 웹 스크래핑: BeautifulSoup을 사용하여 기사 제목 추출

소개

웹 스크래핑은 웹에서 데이터를 효율적으로 수집해야 하는 개발자에게 필수적인 기술입니다. 이 튜토리얼에서는 HTML 및 XML 구문 분석을 위한 강력한 라이브러리인 BeautifulSoup을 사용하여 뉴스 웹사이트에서 기사 제목을 스크랩하는 간단한 Python 스크립트를 살펴보겠습니다.

이 튜토리얼이 끝나면 단 몇 줄의 코드만으로 웹페이지에서 기사 제목을 추출하고 표시하는 스크립트를 갖게 됩니다!


전제 조건

코드를 살펴보기 전에 시스템에 Python이 설치되어 있는지 확인하세요. 다음 라이브러리도 필요합니다:

  1. 요청: HTTP 요청을 하고 웹페이지 콘텐츠를 가져옵니다.
  2. BeautifulSoup(bs4): HTML에서 데이터를 구문 분석하고 추출합니다.

pip를 사용하여 다음 라이브러리를 설치할 수 있습니다.

pip install requests beautifulsoup4

 문제

BBC News와 같은 웹사이트의 최신 뉴스를 추적하고 싶다고 가정해 보겠습니다. 사이트를 수동으로 방문하는 대신 Python을 사용하여 이 작업을 자동화하고 분석 또는 표시를 위해 기사 제목을 스크랩할 수 있습니다.


코드

다음은 기사 제목을 스크랩하는 전체 Python 스크립트입니다.

import requests
from bs4 import BeautifulSoup

def fetch_article_titles(url):
    try:
        # Step 1: Send an HTTP GET request to fetch the webpage
        response = requests.get(url)
        response.raise_for_status()  # Ensure the request was successful

        # Step 2: Parse the webpage content with BeautifulSoup
        soup = BeautifulSoup(response.text, "html.parser")

        # Step 3: Use a CSS selector to find all article titles
        titles = []
        for heading in soup.select("h3"):  # Most news sites use <h3> tags for article titles
            titles.append(heading.get_text(strip=True))  # Extract and clean the text

        return titles
    except requests.exceptions.RequestException as e:
        print(f"Error fetching the webpage: {e}")
        return []
    except Exception as e:
        print(f"Error during parsing: {e}")
        return []

# Example usage: Fetching titles from BBC News
url = "https://www.bbc.com/news"
titles = fetch_article_titles(url)

# Print the article titles
print("Latest Article Titles:")
for i, title in enumerate(titles, 1):
    print(f"{i}. {title}")


작동 방식

  1. 요청하기:

    • requests.get 메소드를 사용하여 대상 웹페이지의 콘텐츠를 가져옵니다.
    • raise_for_status 메소드는 모든 HTTP 오류(예: 404 또는 500)를 조기에 포착하도록 보장합니다.
  2. 콘텐츠 분석:

    • BeautifulSoup 라이브러리는 HTML 콘텐츠를 구문 분석하므로 CSS 선택기를 사용하여 요소를 쉽게 탐색하고 추출할 수 있습니다.
  3. 제목 추출:

    • soup.select 메소드는 모든

      뉴스 사이트의 기사 제목이 일반적으로 포함되는 요소입니다.

    • get_text 메소드는 각 요소에서 깨끗한 텍스트를 추출합니다.

예제 출력

스크립트를 실행하면 다음과 같은 깔끔한 기사 제목 목록을 얻을 수 있습니다.

Latest Article Titles:
1. Israel-Gaza conflict: Latest updates
2. Global markets fall amid economic uncertainty
3. AI advancements raise ethical questions
4. Football: Premier League results
...

스크립트 사용자 정의

이 스크립트를 수정하여 다른 유형의 콘텐츠를 스크랩하거나 다른 웹사이트를 타겟팅할 수 있습니다. 시도해 볼 수 있는 몇 가지 조정 방법은 다음과 같습니다.

  • CSS 선택기 변경:
    대상 웹사이트의 구조가 다른 경우 "h3"를 보다 구체적인 선택기(예: "div.article-title")로 바꾸세요.

  • 추가 데이터 스크랩:
    관련 HTML 요소 및 속성을 선택하여 URL, 발행일 또는 요약을 추출하세요.


윤리적인 스크래핑을 위한 팁

  1. 웹사이트 서비스 약관을 존중하세요:
    항상 웹사이트의 robots.txt 파일이나 이용 약관을 확인하여 스크래핑이 허용되는지 확인하세요.

  2. 요청 속도 제한:
    time.sleep 메소드를 사용하여 요청 사이에 지연을 추가하여 서버 과부하를 방지하세요.

  3. 변경사항을 적절하게 처리:
    웹사이트는 구조를 변경하여 스크립트를 손상시킬 수 있습니다. 항상 코드를 디버깅하고 업데이트할 준비를 하세요.


결론

단 몇 줄의 Python 코드만으로 뉴스 웹사이트에서 기사 제목을 스크랩할 수 있는 간단하면서도 강력한 스크립트를 구축했습니다. BeautifulSoup을 사용하면 필요한 데이터를 쉽게 탐색하고 추출할 수 있으며, 요청은 HTTP 상호작용을 처리합니다.

웹 스크래핑은 동향 모니터링부터 데이터 수집 자동화까지 다양한 기회를 열어줄 수 있습니다. 책임감 있게 긁어내는 것만 기억하세요!

위 내용은 단순화된 웹 스크래핑: BeautifulSoup을 사용하여 기사 제목 추출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.