Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 BeautifulSoup으로 HTML/XML 빈 태그 제거하는 방법

BeautifulSoup은 HTML과 XML 파일에서 데이터를 추출할 수 있게 해주는 파이썬 라이브러리입니다. 이 라이브러리를 활용하면 HTML 또는 XML 문서에 포함된 빈 태그(empty tag)를 손쉽게 제거하고, 복잡한 마크업 데이터를 사람이 읽기 좋은 형태로 정제할 수 있습니다.

웹 스크래핑을 하다 보면 불필요한 빈 태그가 많아 코드가 지저분해지는 경우가 자주 발생합니다. 이럴 때 BeautifulSoup의 find_all()extract() 메서드를 조합하면 깔끔하게 정리할 수 있습니다.

BeautifulSoup 설치하기

먼저 로컬 환경에 BeautifulSoup 라이브러리를 설치해야 합니다. 아래 명령어를 터미널에 입력하세요.

pip install beautifulsoup4

HTML 파서로는 속도가 빠른 lxml을 사용할 예정이므로, 필요하다면 함께 설치해 주세요.

pip install lxml

빈 태그 제거 예제 코드

아래 예제는 HTML 문서를 순회하면서 텍스트 내용이 없는 태그를 찾아 제거하는 방법을 보여줍니다.

# BeautifulSoup 라이브러리 임포트
from bs4 import BeautifulSoup

# HTML 문서 준비
html_object = """
<p>Python is an interpreted, high-level and general-purpose
programming language. Python's design
philosophy emphasizes code readability with its notable use of
significant indentation.</p>
"""

# HTML 문서로 soup 객체 생성
soup = BeautifulSoup(html_object, "lxml")

# 문서 내 모든 태그를 순회하며 빈 태그 추출 및 삭제
for x in soup.find_all():
    if len(x.get_text(strip=True)) == 0:
        x.extract()

print(soup)

코드 동작 원리

  • soup.find_all(): 문서 내의 모든 태그를 리스트 형태로 반환합니다.
  • x.get_text(strip=True): 해당 태그 안의 텍스트를 가져오면서 앞뒤 공백을 제거합니다.
  • len(...) == 0: 텍스트 길이가 0이라면 빈 태그로 판단합니다.
  • x.extract(): 해당 태그를 문서 트리에서 완전히 제거합니다.

실행 결과

위 코드를 실행하면 빈 태그가 모두 제거되고, HTML 문서가 깔끔하고 읽기 쉬운 형태로 변환됩니다.

<html><body><p>Python is an interpreted, high−level and general−purpose programming
language. Python's design
philosophy emphasizes code readability with its notable use of significant indentation.</p>
</body></html>

마무리

이처럼 BeautifulSoup을 사용하면 단 몇 줄의 코드로 HTML/XML 문서에서 불필요한 빈 태그를 제거할 수 있습니다. 웹 크롤링 결과물을 정제하거나 데이터 전처리 작업을 할 때 매우 유용하게 활용할 수 있으니, 실제 프로젝트에 적극적으로 적용해 보시기 바랍니다.