[python] 파이썬 BeautifulSoup과 HTML 파싱

BeautifulSoup은 파이썬의 패키지로, 웹 스크래핑과 파싱을 위한 강력한 도구입니다. HTML 문서를 쉽게 파싱하고 원하는 데이터만 추출할 수 있습니다. 이번 글에서는 BeautifulSoup을 사용하여 HTML 문서를 파싱하는 방법을 알아보겠습니다.

BeautifulSoup 설치

먼저 BeautifulSoup을 설치해야 합니다. 다음 명령어를 사용하여 설치하세요:

pip install beautifulsoup4

HTML 파싱

다음은 HTML 문서를 BeautifulSoup으로 파싱하는 간단한 예제입니다:

from bs4 import BeautifulSoup

html_doc = """
<html>
    <head>
        <title>파이썬 BeautifulSoup</title>
    </head>
    <body>
        <h1>HTML 파싱 예제</h1>
        <p>이것은 BeautifulSoup으로 파싱한 HTML 문서입니다.</p>
        <ul>
            <li>리스트 항목 1</li>
            <li>리스트 항목 2</li>
            <li>리스트 항목 3</li>
        </ul>
    </body>
</html>
"""

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

# 원하는 요소 추출
title = soup.title
body = soup.body

print(title.text)  # "파이썬 BeautifulSoup"
print(body.p.text)  # "이것은 BeautifulSoup으로 파싱한 HTML 문서입니다."

위의 코드에서는 BeautifulSoup 클래스를 먼저 import합니다. 그 후, 파싱할 HTML 문서를 html_doc 변수에 저장합니다. html.parser를 사용하여 BeautifulSoup 객체를 생성하고, titlebody 요소를 추출합니다. 마지막으로, title.textbody.p.text를 사용하여 텍스트를 출력합니다.

요소 선택 및 탐색

BeautifulSoup을 사용하면 다양한 방식으로 요소를 선택하고 탐색할 수 있습니다. 아래는 몇 가지 예제입니다:

다음은 findfind_all의 사용 예제입니다:

from bs4 import BeautifulSoup

html_doc = """
<html>
    <body>
        <h1>HTML 파싱 예제</h1>
        <p class="highlight">이것은 BeautifulSoup으로 파싱한 HTML 문서입니다.</p>
        <ul>
            <li>리스트 항목 1</li>
            <li>리스트 항목 2</li>
            <li>리스트 항목 3</li>
        </ul>
    </body>
</html>
"""

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

# class 속성이 'highlight'인 첫 번째 p 요소를 반환
highlight_p = soup.find('p', class_='highlight')
print(highlight_p.text)  # "이것은 BeautifulSoup으로 파싱한 HTML 문서입니다."

# 모든 li 요소를 리스트로 반환
li_items = soup.find_all('li')
for li in li_items:
    print(li.text)

위의 코드에서는 highlight_p 변수에 find 메서드를 사용하여 p 요소 중 class 속성이 highlight인 첫 번째 요소를 저장합니다. 이후 highlight_p.text를 출력하면 해당 요소의 텍스트를 얻을 수 있습니다.

또한 li_items 변수에 find_all 메서드를 사용하여 모든 li 요소를 저장하고, 반복문을 사용하여 각 요소의 텍스트를 출력합니다.

이와 같이 BeautifulSoup을 사용하면 HTML 문서를 쉽게 파싱하고 원하는 데이터를 추출할 수 있습니다. 더 자세한 정보는 BeautifulSoup 공식 문서를 참조하세요.

참고자료