Python의 문자열에서 HTML 태그 제거

Fariba Laiq 2023년10월10일
  1. Regex를 사용하여 Python의 문자열에서 HTML 태그 제거
  2. BeautifulSoup을 사용하여 Python의 문자열에서 HTML 태그 제거
  3. xml.etree.ElementTree를 사용하여 Python의 문자열에서 HTML 태그 제거
Python의 문자열에서 HTML 태그 제거

이 가이드에서는 문자열에서 HTML 태그를 제거하는 몇 가지 방법을 배우고 적용합니다. 정규식, BeautifulSoup 및 XML 요소 트리를 사용합니다.

Regex를 사용하여 Python의 문자열에서 HTML 태그 제거

HTML 태그에는 항상 <> 기호가 포함됩니다. 내장 re 모듈(정규 표현식)을 가져오고 compile() 메서드를 사용하여 입력 문자열에서 정의된 패턴을 검색합니다.

여기에서 <.*?> 패턴은 <> 태그 내에서 0개 이상의 문자를 의미하며 가능한 한 적게 일치합니다.

sub() 메소드는 문자열의 발생을 다른 문자열로 대체하는 데 사용됩니다. 여기에서 발견된 항목을 빈 문자열로 바꿉니다.

예제 코드:

# Python 3.x
import re

string = "<h1>Delftstack</h1>"
print("String before cleaning:", string)
to_clean = re.compile("<.*?>")
cleantext = re.sub(to_clean, "", string)
print("String after cleaning:", cleantext)

출력:

#Python 3.x
String before cleaning: <h1>Delftstack</h1>
String after cleaning: Delftstack

BeautifulSoup을 사용하여 Python의 문자열에서 HTML 태그 제거

BeautifulSoup은 HTML과 XML에서 데이터를 가져오는 Python 라이브러리입니다. 파서를 사용하여 HTML 및 XML을 구문 분석합니다. 권장되는 것은 lxml입니다.

다음 명령을 사용하여 계속하기 전에 둘 다 설치해야 합니다.

#Python 3.x
pip install beautifulsoup4
#Python 3.x
pip install lxml

BeautifulSoup 모듈을 가져오고 다음 코드에서 주어진 HTML 문자열을 구문 분석했습니다. text 속성을 사용하여 HTML에서 텍스트에 액세스했습니다.

예제 코드:

# Python 3.x
from bs4 import BeautifulSoup

string = "<h1>Delftstack</h1>"
print("String after cleaning:", string)
cleantext = BeautifulSoup(string, "lxml").text
print("String after cleaning:", cleantext)

출력:

#Python 3.x
String after cleaning: <h1>Delftstack</h1>
String after cleaning: Delftstack

xml.etree.ElementTree를 사용하여 Python의 문자열에서 HTML 태그 제거

ElementTree는 XML을 구문 분석하고 탐색하는 라이브러리입니다. fromstring() 메서드는 문자열에서 구문 분석 트리의 루트 요소인 요소로 XML을 직접 구문 분석합니다.

itertext()는 이 요소와 모든 하위 요소를 문서 순서대로 반복하여 모든 내부 텍스트를 반환하는 텍스트 반복기를 생성합니다. 문자열 구분 기호로 분리된 iterable(입력 문자열)의 모든 구성 요소(내부 텍스트)를 병합하여 join() 메서드는 HTML 태그가 없는 문자열을 반환합니다.

예제 코드:

# Python 3.x
import xml.etree.ElementTree as ET

string = "<h1>Delftstack</h1>"
print("String before cleaning:", string)
tree = ET.fromstring(string)
print("String after cleaning:", "".join(tree.itertext()))

출력:

#Python 3.x
String before cleaning: <h1>Delftstack</h1>
String after cleaning: Delftstack
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

관련 문장 - Python String