Obtenir des éléments par type en HTML malformé
-
19-09-2019 - |
Question
Quelle est la meilleure façon en Java pour récupérer tous les éléments avec un certain type dans une page HTML malformé? Donc, je veux faire quelque chose comme ceci:
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
}
La solution
HtmlCleaner est sans doute l'un des meilleurs parseurs HTML là-bas quand il s'agit de traiter (un peu) HTML malformé.
La documentation est ici avec quelques exemples de code; vous êtes à la recherche essentiellement pour la méthode de getElementsByName()
.
Jetez un oeil à Comparaison des parseurs Java HTML si vous envisagez d'autres bibliothèques.
Autres conseils
J'ai eu du succès en utilisant tagsoup . Voici une brève description de leur page d'accueil:
Ceci est la page d'accueil de TagSoup, un analyseur compatible SAX écrit en Java qui, au lieu de l'analyse syntaxique XML bien formé ou valide, parse HTML comme il se trouve dans la nature: pauvre, méchant et brutal, bien que très souvent loin d'être court. TagSoup est conçu pour les personnes qui doivent traiter ce genre de choses en utilisant un semblant de conception d'une application rationnelle. En fournissant une interface SAX, il permet des outils XML standard à appliquer à même le pire HTML. TagSoup comprend également un processeur de ligne de commande qui lit les fichiers HTML et peut générer soit propre HTML ou XML bien formé qui est une approximation proche de XHTML.
Vérifier JTidy .
JTidy est un port Java de HTML Tidy, un HTML vérificateur de syntaxe et jolie imprimante. Comme son cousin non-Java, JTidy peut être utilisé comme un outil pour nettoyage HTML malformé et défectueux. En outre, JTidy fournit des DOM interface avec le document qui est en cours de traitement, qui a effectivement vous rend capable d'utiliser JTidy comme DOM analyseur pour HTML dans le monde réel.