Como analisar HTML em Python
Aspose.HTML FOSS para Python analisa marcação com o algoritmo padrão de construção de árvore: HTMLDocument.parse() para páginas completas, HTMLDocument.parse_fragment() para trechos, e classes de elementos tipados (HTMLElement e suas subclasses) no resultado. Este guia cobre os pontos de entrada de análise e verifica a saída através do DOM, usando pip para instalação.
Guia passo a passo
Etapa 1: Instale o pacote
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Etapa 2: Importe as classes necessárias
from aspose_html.html_document import HTMLDocument
from aspose_html.dom import DocumentEtapa 3: Escolha o ponto de entrada de análise correto
HTMLDocument.parse() executa a construção de árvore de documento completo com recuperação de erros de padrões; HTMLDocument.parse_fragment() aplica o algoritmo de fragmento para marcação parcial; HTMLDocument.load() lê de uma fonte. Os elementos analisados chegam tipados — um <a> é um HTMLAnchorElement, um <input> um HTMLInputElement.
Etapa 4: Verificar a saída através do DOM
O resultado analisado é uma árvore DOM normal — as mesmas APIs de busca e atributos se aplicam. Construir a estrutura equivalente programaticamente mostra a superfície compartilhada:
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())Etapa 5: Continuar com estilos ou estrutura
Anexe folhas de estilo e leia estilos computados, ou use os assistentes de inserção Element (insert_adjacent_html(), insert_adjacent_text()) para edições localizadas — a saída da análise alimenta todas as demais camadas.
Problemas comuns e correções
A marcação parcial obtém wrappers html e body. parse() aplica regras de documento completo; use parse_fragment() para trechos.
A marcação malformada é analisada sem erros. Esse é o comportamento padrão — a construção da árvore define a recuperação para cada caso de erro em vez de gerar exceção.
O conteúdo da tabela aparece fora da sua tabela. Foster parenting do conteúdo de tabela fora de lugar faz parte do algoritmo; corrija o aninhamento da origem.
Perguntas Frequentes
Os elementos analisados são tipados?
Sim — a análise produz a hierarquia HTMLElement: controles de formulário (HTMLFormElement, HTMLInputElement), conteúdo incorporado (HTMLImageElement, HTMLCanvasElement), navegação (HTMLAnchorElement) e mais.
Posso controlar o pipeline de análise em um nível mais baixo?
Sim — o Tokenizer e o TreeBuilder são públicos, com parse_html() como o wrapper de chamada única.
A análise executa scripts?
Não. A avaliação do script é explícita e separada via JSContext.