[BeautifulSoup] find 함수

서대철·2023년 8월 6일
1

Beautiful Soup은 HTML 및 XML 문서를 파싱하고 웹 스크래핑하는 데 사용되는 파이썬 라이브러리다. 이 라이브러리는 웹사이트에서 데이터를 추출하고, 복잡한 HTML 코드를 처리하며, 웹 페이지의 구조를 효과적으로 탐색하는 데 널리 활용된다. Beautiful Soup은 HTML 콘텐츠를 처리하기 쉽도록 다양한 기능을 제공하여 요소를 검색하고 조작할 수 있는 편리한 API를 제공한다.

Beautiful Soup의 작동 방식과 주요 기능에 대한 간단한 개요는 다음과 같다:

  1. 파싱(parsing)
    Beautiful Soup은 HTML 또는 XML 콘텐츠를 입력으로 받아 파싱 트리로 변환한다. 이 파싱 트리는 문서의 계층 구조를 나타내며, 이를 통해 문서의 요소들을 체계적으로 탐색할 수 있다.

  2. 검색 및 탐색
    Beautiful Soup은 요소 이름, 속성 및 텍스트 콘텐츠 등 다양한 조건을 기반으로 파싱 트리에서 특정 요소를 검색하는 메서드를 제공한다. find() 및 find_all()과 같은 메서드를 사용하여 원하는 요소를 찾아낼 수 있다.

  3. 속성 및 텍스트 접근
    한 번 요소를 찾으면 Beautiful Soup은 해당 요소의 속성과 텍스트 콘텐츠에 접근할 수 있는 메서드를 제공한다.

  4. 탐색
    Beautiful Soup을 이용하면 파싱 트리를 여러 방향으로 탐색할 수 있다. 계층 구조를 따라 위, 아래, 옆으로 이동하는 등 다양한 방법으로 요소들을 찾을 수 있다.

  5. 수정 및 조작
    Beautiful Soup을 이용하여 파싱 트리를 수정하거나 요소와 속성을 추가, 수정, 삭제할 수 있다. 이를 통해 HTML 코드를 정리하거나 문서의 구조를 조정하는 데 활용할 수 있다.

  6. 예쁜 출력
    Beautiful Soup은 HTML 또는 XML 문서의 내용을 깔끔하게 포맷하여 표시할 수 있다. 이를 통해 디버깅 및 시각적으로 콘텐츠를 확인하는 데 도움이 될 수 있다.

Beautiful Soup 사용 예제는 아래와 같다:

클래스와 ID 속성을 이용한 find() 메서드
다음과 같은 HTML 코드를 보자.

<div class="article">
    <h2 id="title">Beautiful Soup 소개</h2>
    <p class="content">Beautiful Soup는 웹 스크래핑과 HTML 파싱을 위한 Python 라이브러리입니다.</p>
</div>

클래스로 요소 찾기:

from bs4 import BeautifulSoup

html = '''
<div class="article">
    <h2 id="title">Beautiful Soup 소개</h2>
    <p class="content">Beautiful Soup는 웹 스크래핑과 HTML 파싱을 위한 Python 라이브러리입니다.</p>
</div>
'''

soup = BeautifulSoup(html, 'html.parser')

# 클래스가 "content"인 첫 번째 <p> 요소 찾기
content_paragraph = soup.find('p', class_='content')
print(content_paragraph.text)

결과:

Beautiful Soup는 웹 스크래핑과 HTML 파싱을 위한 Python 라이브러리입니다.

ID로 요소 찾기:

# ID가 "title"인 <h2> 요소 찾기
title_heading = soup.find('h2', id='title')
print(title_heading.text)

결과:

Beautiful Soup 소개

text.strip() 사용하기:

<div class="description">
    <p>
        여기에는 추가 공백과 줄바꿈이 포함된 텍스트가 있습니다.
        <strong>Beautiful Soup</strong>이 이를 정리하는 데 도움을 줍니다.
    </p>
</div>

from bs4 import BeautifulSoup

html = '''
<div class="description">
    <p>
        여기에는 추가 공백과 줄바꿈이 포함된 텍스트가 있습니다.
        <strong>Beautiful Soup</strong>이 이를 정리하는 데 도움을 줍니다.
    </p>
</div>
'''

soup = BeautifulSoup(html, 'html.parser')

# <p> 요소 찾기 및 text.strip() 사용하여 공백 제거
description_paragraph = soup.find('p')
cleaned_text = description_paragraph.text.strip()
print(cleaned_text)

결과:

여기에는 추가 공백과 줄바꿈이 포함된 텍스트가 있습니다. Beautiful Soup이 이를 정리하는 데 도움을 줍니다.

0개의 댓글