> 백엔드 개발 > 파이썬 튜토리얼 > BeautifulSoup을 사용하여 웹 페이지에서 보이는 텍스트만 추출하는 방법은 무엇입니까?

BeautifulSoup을 사용하여 웹 페이지에서 보이는 텍스트만 추출하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-14 18:56:02
원래의
180명이 탐색했습니다.

How to Extract Only Visible Text from Web Pages Using BeautifulSoup?

BeautifulSoup을 사용한 웹 페이지 텍스트 추출: 보이는 텍스트만 추출

웹 스크래핑에는 웹 페이지에서 특정 텍스트 콘텐츠를 검색하는 작업이 포함되는 경우가 많습니다. 널리 사용되는 HTML 구문 분석 라이브러리인 BeautifulSoup를 사용하면 스크립트, 주석, CSS 등 원치 않는 요소를 제외하고 웹페이지에 보이는 텍스트만 추출해야 하는 문제에 직면할 수 있습니다.

보이는 텍스트 식별

특정 HTML 요소에 보이는 텍스트가 포함되어 있는지 확인하려면 tag_visible 함수를 사용할 수 있습니다. 이 함수는 대상 요소의 상위 요소가 제외된 특정 태그 세트(예: 스타일, 스크립트, 헤드) 내에 있는지 또는 대상 요소가 주석인지 확인합니다. 두 조건 중 하나가 충족되면 함수는 False를 반환하여 해당 요소가 표시되지 않는 것으로 간주됩니다.

표시되는 텍스트 추출

웹페이지에서 표시되는 텍스트를 추출하려면, 다음 단계를 따르세요.

  1. HTML 본문에서 BeautifulSoup 개체를 만듭니다.
  2. findAll(text=True) 메서드를 사용하여 HTML의 모든 텍스트를 찾습니다.
  3. 원하지 않는 요소를 제거하려면 tag_visible 함수를 사용하여 추출된 텍스트를 필터링하세요.
  4. 표시되는 텍스트 문자열을 함께 결합하고 앞뒤 공백을 제거하세요.

사용 예

아래 코드는 이러한 기술을 사용하여 웹 페이지에서 보이는 텍스트를 추출하는 방법을 보여줍니다.

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True

def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)
    return u" ".join(t.strip() for t in visible_texts)

html = urllib.request.urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))
로그인 후 복사

이 접근 방식을 활용하면 관련 없는 콘텐츠를 제외하고 웹 페이지에서 보이는 텍스트를 효과적으로 긁어낼 수 있습니다. 스크립트, 댓글, 기타 숨겨진 요소에서.

위 내용은 BeautifulSoup을 사용하여 웹 페이지에서 보이는 텍스트만 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿