Question

Code I beaucoup de parseurs. Jusqu'à présent, je l'aide du navigateur sans tête HtmlUnit pour l'analyse et l'automatisation navigateur.

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

80% de mon travail consiste à l'analyse syntaxique juste, je veux utiliser un analyseur HTML léger, car il faut beaucoup de temps à HtmlUnit d'abord charger une page, puis obtenir la source et l'analyser.

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


EDIT:

En plus, je veux au moins les caractéristiques suivantes:

  1. Vitesse
  2. Facilité pour localiser toute HtmlElement par son "id" ou "nom" ou "type de balise".

Il serait ok pour moi si elle ne nettoie pas le code HTML sale. Je ne ai pas besoin de nettoyer toute source HTML. J'ai juste besoin d'une meilleure façon de se déplacer à travers HtmlElements et les données de récolte d'eux.

Était-ce utile?

La solution

prise auto: Je viens de sortir un nouvel analyseur Java HTML: jsoup . Je mentionne ici parce que je pense qu'il fera ce que vous recherchez.

L'astuce du 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 Sélecteur de la javadoc pour plus d'informations.

Ceci est un nouveau projet, de sorte que des idées d'amélioration sont bienvenus!

Autres conseils

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

  

HtmlCleaner est parseur HTML open source écrit en Java. HTML trouvé sur le Web est généralement sale, mal formé et ne convient pas pour un traitement ultérieur. Pour toute consommation sérieuse de ces documents, il faut d'abord nettoyer le désordre et mettre l'ordre à des balises, attributs et texte ordinaire. Pour le document HTML donné, HtmlCleaner réordonne éléments individuels et produit XML bien formé. Par défaut, il suit des règles similaires que la plupart des navigateurs Web utilisent pour créer Document Object Model. Cependant, l'utilisateur peut fournir une balise personnalisée et ensemble de règles pour le filtrage de l'étiquette et l'équilibrage.

Avec HtmlCleaner vous pouvez trouver tout élément en utilisant XPath.

Pour d'autres parseurs html voir cette question SO .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top