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

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

DDD
풀어 주다: 2024-11-25 18:41:09
원래의
781명이 탐색했습니다.

How to Extract Visible Webpage Text Using BeautifulSoup?

BeautifulSoup으로 보이는 웹페이지 텍스트 추출

많은 웹 스크래핑 작업에는 스크립트와 같은 요소를 제외하고 웹페이지의 보이는 텍스트 콘텐츠를 검색하는 작업이 포함됩니다. 주석 및 CSS 스타일. BeautifulSoup을 사용하면 올바른 접근 방식으로 이 작업을 간단하게 수행할 수 있습니다.

findAll() 함수를 사용할 때 일반적인 문제가 발생합니다. 이 함수는 바람직하지 않은 요소 내에 숨겨진 노드를 포함하여 모든 텍스트 노드를 검색하기 때문입니다. 이 문제를 해결하기 위해 특정 태그와 댓글을 제외하는 사용자 정의 필터를 정의할 수 있습니다.

다음 코드는 이 접근 방식을 예시합니다.

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))
로그인 후 복사

tag_visible 함수는 텍스트의 상위 요소가 있는지 확인합니다. node는 바람직하지 않은 태그 중 하나와 일치하거나 노드가 주석인 경우입니다. 그런 다음 이 필터를 통과하는 노드는 u" ".join(t.strip() for t in visible_texts)을 사용하여 표시되는 텍스트를 단일 문자열로 결합하는 데 사용됩니다.

이 접근 방식은 표시되는 텍스트만 효과적으로 추출합니다. 스크립트, 댓글 등 불필요한 요소를 제외한 웹페이지입니다.

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

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