Obtendo elementos por tipo em malformado HTML
-
19-09-2019 - |
Pergunta
O que é a maneira mais fácil em Java para recuperar todos os elementos com um determinado tipo em uma página HTML mal formado? Então, eu quero fazer algo parecido com isto:
public static void main(String[] args) {
// Read in an HTML file from disk
// Retrieve all INPUT elements regardless of whether the HTML is well-formed
// Loop through all elements and retrieve their ids if they exist for the element
}
Solução
HtmlCleaner é sem dúvida um dos melhores analisadores HTML lá fora, quando se trata de lidar com (um pouco) malformado HTML.
A documentação é aqui com alguns exemplos de código; você está basicamente procurando método getElementsByName()
.
Dê uma olhada Comparação de analisadores de Java HTML se você está pensando em outras bibliotecas.
Outras dicas
Eu tive sucesso usando TagSoup . Aqui está uma breve descrição de sua home page:
Esta é a home page da TagSoup, um parser SAX-compliant escrito em Java que, em vez de analisar bem formado ou XML válido, parses HTML, uma vez que é encontrado na natureza: pobre, desagradável e brutal, embora muitas vezes longe de ser curto. TagSoup é projetado para pessoas que têm de processar este material usando alguma aparência de um desenho racional aplicação. Ao fornecer uma interface SAX, ele permite que ferramentas XML padrão a ser aplicado ao mesmo o pior HTML. TagSoup também inclui um processador de linha de comando que lê arquivos HTML e pode gerar tanto HTML limpa ou XML bem formado que é uma aproximação para XHTML.
Verifique JTidy .
JTidy é uma porta de Java do HTML Tidy, uma HTML sintaxe verificador e bonita impressora. Como seu primo não-Java, JTidy pode ser usado como uma ferramenta para limpeza de HTML mal formado e com defeito. Além disso, o JTidy fornece um DOM interface com o documento que é a ser processado, o que efectivamente torna capaz de usar JTidy como um DOM analisador de HTML no mundo real.