web-dev-qa-db-fra.com

Quel analyseur HTML est le meilleur?

Je code beaucoup d'analyseurs. Jusqu'à présent, j'utilisais le navigateur sans tête HtmlUnit pour l'analyse et l'automatisation du navigateur.

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

Comme 80% de mon travail consiste uniquement en une analyse, je souhaite utiliser un analyseur HTML léger, car il faut beaucoup de temps dans HtmlUnit pour charger une page, puis pour obtenir le code source, puis pour l’analyser.

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


EDIT:

Par le meilleur, je veux au moins les fonctionnalités suivantes:

  1. La vitesse
  2. Facilité de localiser n'importe quel HtmlElement par son "id", son "nom" ou son "type de balise".

Ce serait bien pour moi si cela ne nettoie pas le code HTML sale. Je n'ai pas besoin de nettoyer une source HTML. J'ai juste besoin d'un moyen le plus simple pour passer à travers HtmlElements et récolter des données à partir d'eux.

186
Yatendra Goel

Prise automatique: je viens de publier un nouvel analyseur syntaxique Java HTML: jsoup . Je le mentionne ici parce que je pense que cela fera ce que vous voulez.

Son truc de parti 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 Selector javadoc pour plus d’informations.

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

385
Jonathan Hedley

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

HtmlCleaner est un analyseur HTML open source écrit en Java. Le code HTML trouvé sur le Web est généralement sale, mal formé et ne convient pas à un traitement ultérieur. Pour toute utilisation sérieuse de tels documents, il est d'abord nécessaire de nettoyer le désordre et d'ordonner les balises, les attributs et le texte ordinaire. Pour le document HTML donné, HtmlCleaner réorganise des éléments individuels et produit un XML bien formé. Par défaut, il suit des règles similaires à celles utilisées par la plupart des navigateurs Web pour créer un modèle d'objet de document. Toutefois, l'utilisateur peut fournir un ensemble de règles et de balises personnalisées pour le filtrage et l'équilibrage des balises.

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

Pour les autres analyseurs HTML, voir this SO question .

32
tangens
9
Ms2ger