>백엔드 개발 >파이썬 튜토리얼 >정규식의 함정을 피하면서 Python의 HTML 파일에서 깨끗한 텍스트를 어떻게 추출할 수 있습니까?

정규식의 함정을 피하면서 Python의 HTML 파일에서 깨끗한 텍스트를 어떻게 추출할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-28 19:53:14716검색

How Can I Extract Clean Text from HTML Files in Python While Avoiding the Pitfalls of Regular Expressions?

Python을 사용하여 HTML 파일에서 깨끗한 텍스트 추출

Python을 사용하여 HTML 파일에서 텍스트를 추출하려는 경우 견고성과 정확성을 고려하는 것이 중요합니다. . 정규식은 종종 작업을 수행할 수 있지만 형식이 잘못된 HTML로 인해 어려움을 겪을 수 있습니다.

보다 강력한 솔루션을 위해 일반적으로 Beautiful Soup과 같은 라이브러리가 권장됩니다. 그러나 사용자는 JavaScript 소스 및 잘못된 HTML 엔터티 해석과 같은 원치 않는 텍스트로 인해 문제에 직면할 수 있습니다.

이러한 문제를 해결하려면 보다 포괄적인 접근 방식이 필요합니다.

html2text: 유망한 솔루션

유망한 솔루션 중 하나는 html2text입니다. 이 라이브러리는 HTML 엔터티를 올바르게 처리하고 JavaScript를 무시합니다. 그러나 일반 텍스트 대신 Markdown을 생성하므로 변환하려면 추가 처리가 필요합니다.

BeautifulSoup 및 사용자 정의 코드 활용

대체 접근 방식은 BeautifulSoup을 다음과 함께 사용하는 것입니다. 사용자 정의 코드. 원치 않는 요소(예: 스크립트 및 스타일)를 제거하고 get_text() 메서드를 활용하면 정규 표현식에만 의존하지 않고 깔끔한 텍스트 표현을 얻을 수 있습니다.

다음은 이 접근 방식을 보여주는 Python 코드 조각입니다.

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
soup = BeautifulSoup(html, features="html.parser")

# Remove script and style elements
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Additional processing to remove unwanted whitespace and split headlines into separate lines
lines = (line.strip() for line in text.splitlines())
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

이 접근 방식을 사용하면 처리할 수 없는 정규식이나 라이브러리의 단점 없이 HTML 파일에서 깨끗하고 사람이 읽을 수 있는 텍스트를 추출할 수 있습니다. 모든 시나리오를 효과적으로.

위 내용은 정규식의 함정을 피하면서 Python의 HTML 파일에서 깨끗한 텍스트를 어떻게 추출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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