186 votes

Quel est le meilleur analyseur HTML ?

Je code beaucoup de parsers. Jusqu'à présent, j'utilisais le navigateur headless HtmlUnit pour l'analyse syntaxique et l'automatisation du navigateur.

Maintenant, je veux séparer les deux tâches.

Comme 80 % de mon travail consiste simplement à analyser, je veux utiliser un analyseur HTML léger, car cela prend beaucoup de temps dans HtmlUnit de charger d'abord une page, puis de récupérer la source et enfin de l'analyser.

Je veux savoir quel est le meilleur analyseur HTML. L'analyseur serait meilleur s'il est proche de l'analyseur HtmlUnit.


EDITAR:

Par mieux, je veux au moins les caractéristiques suivantes :

  1. Vitesse
  2. Il est facile de localiser un élément Html par son "id", son "nom" ou son "type de balise".

Cela me conviendrait s'il ne nettoyait pas le code HTML sale. Je n'ai pas besoin de nettoyer la source HTML. J'ai juste besoin d'un moyen simple de me déplacer à travers les HtmlElements et d'en récolter les données.

386voto

Jonathan Hedley Points 4629

Self plug : Je viens de publier un nouveau parseur Java HTML : jsoup . Je le mentionne ici parce que je pense qu'il fera ce que vous recherchez.

Son truc de fête est une syntaxe de sélecteur CSS pour trouver des éléments, par exemple :

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();

Voir le Sélecteur javadoc pour plus d'informations.

Il s'agit d'un nouveau projet, donc toute idée d'amélioration est la bienvenue !

32voto

tangens Points 17733

Le meilleur que j'ai vu jusqu'à présent est HtmlCleaner :

HtmlCleaner est un analyseur HTML open-source écrit en Java. Le HTML trouvé sur le Web est généralement sale, mal formé et impropre à un traitement ultérieur. Pour toute consommation sérieuse de tels documents, il est nécessaire d'abord de nettoyer le désordre et de remettre de l'ordre dans les balises, les attributs et le texte ordinaire. Pour le document HTML donné, HtmlCleaner réordonne les éléments individuels et produit un XML bien formé. Par défaut, il suit les mêmes règles que celles utilisées par la plupart des navigateurs web pour créer le Document Object Model. Cependant, l'utilisateur peut fournir des balises personnalisées et un ensemble de règles pour filtrer et équilibrer les balises.

Avec HtmlCleaner, vous pouvez localiser n'importe quel élément en utilisant XPath.

Pour d'autres analyseurs html, voir cette question SO .

9voto

Ms2ger Points 7551

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X