Qual analisador de HTML é o melhor? [fechadas]

194

Eu codifico muitos analisadores. Até agora, eu estava usando o navegador sem cabeça HtmlUnit para análise e automação do navegador.

Agora, quero separar as duas tarefas.

Como 80% do meu trabalho envolve apenas a análise, eu quero usar um analisador HTML leve, porque leva muito tempo no HtmlUnit para carregar uma página primeiro, depois obter a fonte e analisá-la.

Quero saber qual analisador de HTML é o melhor. O analisador seria melhor se estiver próximo ao analisador HtmlUnit.


EDITAR:

Na melhor das hipóteses, quero pelo menos os seguintes recursos:

  1. Rapidez
  2. Facilidade para localizar qualquer HtmlElement por seu "id" ou "nome" ou "tipo de tag".

Seria bom para mim se não limpar o código HTML sujo. Não preciso limpar nenhuma fonte HTML. Eu só preciso de uma maneira mais fácil de percorrer os HtmlElements e coletar dados deles.

Yatendra Goel
fonte
2
Como assim "melhor"? Você quer dizer velocidade, facilidade de transição da implementação atual, aderência aos padrões do W3C, outra coisa em que não pensei? Sua pergunta implica velocidade, mas também implica tempo de transição para o desenvolvimento. Alguns esclarecimentos podem ajudar outras pessoas a recomendar bons analisadores que atendam melhor às suas necessidades.
Aperkins
2
Sua declaração 'Eu codifico muitos analisadores' não parece corresponder à pergunta. Você quer dizer 'Eu preciso usar muito o analisador html?'
blank
11
Penso que esta questão é específica o suficiente para ser isenta da razão estreita "não construtiva".
Bill o Lagarto
9
Vote para reabrir isso, por favor. Isso é específico o suficiente e não deve ser fechado.
AZ_
3
Sim, algumas pessoas no SO lutam uma guerra santa contra guerras sagradas das "melhores" perguntas. Tão irritante. A resposta da votação indica claramente a utilidade desta questão.
user1050755

Respostas:

396

Auto-plug: Acabei de lançar um novo analisador Java HTML: jsoup . Menciono aqui porque acho que fará o que você procura.

Seu truque é uma sintaxe de seletor de CSS para encontrar elementos, por exemplo:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

Consulte o javadoc do seletor para obter mais informações.

Este é um projeto novo, portanto, todas as idéias de melhoria são muito bem-vindas!

Jonathan Hedley
fonte
15
Isso é fantástico, e eu amo o suporte ao seletor de CSS. Eu mal sei que estou usando uma biblioteca Java. :-)
William Pietri
17
Por favor, não pare de apoiar isso. É exatamente isso que precisamos para analisar HTML usando Java do lado do servidor! Isso é incrível! Criei um proxy em apenas algumas horas que modifica todos os links src e href para torná-los caminhos completos para o servidor de origem.
jmort253
7
Acabei de dar uma olhada nisso. Eu gosto de sua interface e documentação. É fácil de entender. :)
emeraldhieu
5
Bom trabalho! Colocou o jsoup em funcionamento em menos de 10 minutos.
Indrek Kõue
10
Inacreditável, isso é tão doente. Consegui processar uma página HTML em minutos. MUITO OBRIGADO POR ESTE GRANDE TRABALHO.
Michael-O
32

O melhor que eu vi até agora é o HtmlCleaner :

HtmlCleaner é um analisador HTML de código aberto escrito em Java. O HTML encontrado na Web geralmente é sujo, mal formado e inadequado para processamento adicional. Para qualquer consumo sério desses documentos, é necessário primeiro limpar a bagunça e levar o pedido a tags, atributos e texto comum. Para o documento HTML fornecido, o HtmlCleaner reordena elementos individuais e produz XML bem formado. Por padrão, segue regras semelhantes usadas pela maioria dos navegadores da Web para criar o Modelo de Objeto de Documento. No entanto, o usuário pode fornecer tags personalizadas e conjunto de regras para filtragem e balanceamento de tags.

Com o HtmlCleaner, você pode localizar qualquer elemento usando o XPath.

Para outros analisadores html, consulte esta questão SO .

tangens
fonte
1
Você precisa manipular o proxy por conta própria e depois usar o HtmlCleaner para processar seu fluxo. => Não é conveniente. Você está em
Home
HTMLTidy não seria uma opção melhor aqui? html-tidy.org
Troy Witthoeft 25/16
1
Similar rules that the most of web browsers use- Isso não é muito convincente
pguardiario