HTML을(를) Python에서 구문 분석하는 방법

HTML을(를) Python에서 구문 분석하는 방법

Aspose.HTML FOSS for Python는 표준 트리 구축 알고리즘으로 마크업을 파싱합니다: 전체 페이지에는 HTMLDocument.parse(), 스니펫에는 HTMLDocument.parse_fragment(), 결과에는 타입이 지정된 요소 클래스(HTMLElement 및 그 하위 클래스) 등이 포함됩니다. 이 가이드는 파싱 진입점을 다루고 pip를 사용한 설치를 통해 DOM으로 출력물을 검증합니다.

단계별 가이드

Step 1: 패키지 설치

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Step 2: 필요한 클래스 가져오기

from aspose_html.html_document import HTMLDocument
from aspose_html.dom import Document

Step 3: 올바른 파싱 진입점 선택

HTMLDocument.parse()는 표준 오류 복구와 함께 전체 문서 트리 구성을 실행합니다; HTMLDocument.parse_fragment()은 부분 마크업을 위한 프래그먼트 알고리즘을 적용합니다; HTMLDocument.load()는 소스에서 읽습니다. 파싱된 요소는 타입이 지정되어 도착합니다 — <a>는 HTMLAnchorElement이며, <input>는 HTMLInputElement입니다.


단계 4: DOM을 통한 출력 검증

파싱된 결과는 일반 DOM 트리 — 동일한 조회 및 속성 API가 적용됩니다. 프로그램matically 동등한 구조를 구축하면 공유된 표면이 나타납니다:

doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "content")
doc.append_child(el)
print(doc.get_element_by_id("content").has_child_nodes())

단계 5: 스타일 또는 구조 진행

스타일시트를 연결하고 계산된 스타일을 읽거나, Element 삽입 도우미(insert_adjacent_html(), insert_adjacent_text())를 사용하여 로컬 편집을 수행합니다 — 파싱 출력이 다른 모든 레이어에 공급됩니다.

일반적인 문제 및 해결책

부분 마크업에 html 및 body 래퍼가 추가됩니다. parse() 전체 문서 규칙을 적용합니다; 사용 parse_fragment() 스니펫에 대해.

잘못된 마크업도 오류 없이 파싱됩니다. 그것이 표준 동작이며 — 트리 구성은 오류를 발생시키는 대신 모든 오류 사례에 대한 복구를 정의합니다.

테이블 내용이 해당 테이블 외부에 나타납니다. 잘못 배치된 테이블 내용에 대한 포스터 페어런팅은 알고리즘의 일부입니다; 소스 중첩을 수정하세요.

자주 묻는 질문

파싱된 요소는 타입이 있나요?

예 — 파싱은 HTMLElement 계층 구조를 생성합니다: 폼 컨트롤 (HTMLFormElement, HTMLInputElement), 임베디드 콘텐츠 (HTMLImageElement, HTMLCanvasElement), 내비게이션 (HTMLAnchorElement), 등등.

파싱 파이프라인을 더 낮은 수준에서 제어할 수 있나요?

예 — Tokenizer와 TreeBuilder은 공개되어 있으며, parse_html()가 한 번 호출하는 래퍼입니다.

파싱이 스크립트를 실행합니까?

아니오. 스크립트 평가는 JSContext을 통해 명시적이고 별도로 이루어집니다.

참조

 한국어