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 중국어 웹사이트의 기타 관련 기사를 참조하세요!