jeanphi6
Messages postés33Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention24 juillet 2008
-
1 mars 2007 à 14:13
jeanphi6
Messages postés33Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention24 juillet 2008
-
5 mars 2007 à 14:36
Bonjour,
je voudrais parser un fichier HTML. Comme le HTML provient du meme langage que le XML, j'ai utiliser un parser SAX. Mais la page HTML doit être validée XHTML sinon le parseur plante .
Personne n'a une petite idée pour arriver à parser un fichier HTML ? ( et même pour un fichier non valide XHTML). Le parser Sax est-il la meilleure solution ?
A oui, j'aimerai ne pas importer d'autres librairies, mais si il n'y as pas le choix, je ferrais avec !
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 1 mars 2007 à 16:10
Salut,
Je fais pas mal de parsing en ce moment (xml et html).
J'ai abandonné SAX a cause de plusieurs problèmes auxquels je n'ai pas trouvé de solution :
- html non valide,
- reprise de connexion après reinitialisation par le serveur non controlable avec le couple SAX/Apache.
J'utilise plutôt une forme de parsing "plat" à l'aide d'expressions régulières.
Pour le xml, ça passe généralement bien.
Pour le html, c'est plus sportif. Ma méthode :
- Ouverture de la page dans firebug
- Recherche de balises potables qui peuvent servir d'accroche aux ER
- Quand les balises ne passent pas, accroche sur du texte propre à la page
- Construction d'une série d'ER me permettant d'extraire les données dont j'ai besoin
- Parsing.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 1 mars 2007 à 21:53
Salut:
Jettes un coup d'oeil sur la classe javax.swing.text.html elle permet de parser un fichier HTML.
Pour SAX je ne sais pas que ça va vraimant servir pour parser un fichier HTML tout simplement parceque:
HTML n'est pas assez rigoureux comme XML
Il y a des balises HTML qui n'admettent pas des balises de fin (</>) prend l'exemple de la balise img.
__________________________________________________________
A.B. : La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 2 mars 2007 à 10:39
:o) nan nan pas barbare, juste ultralight.Mes parsers peuvent être utilisé simultanément par un paquet d'internautes. Par conséquent des clients prégénérés du type wsdl ou des classes swing sont trop lourdes et mobilisent trop de ressources pour mes besoins.
Je n'utilise que deux paquetages basiques : java.util.regex.Pattern et java.util.regex.Matcher. Le reste est fait à la mano.
Maintenant si tu n'as besoin que de parser qu'une page de temps en temps, swing est surement une bonne solution.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jeanphi6
Messages postés33Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention24 juillet 2008 2 mars 2007 à 10:45
"Je n'utilise que deux paquetages basiques : java.util.regex.Pattern et java.util.regex.Matcher."
J'étais juste en train de me renseigner la dessus, j'ai d'ailleur commencer, mais les expressions régulières, je ne maitrise pas trop. D'ailleurs si quelqu'un pourrait m'aider, par exemple pour que le matcher me renvoie une chaine contenant la balise et son contenu, comme par exemple :
public class PatternExample{
public static void main(String[] args){
String s = " ";
Matcher m = Pattern.compile("^$").matcher(s.trim());
if (m.find()) {
System.out.println("Trouve = " + m.group(1));
}
}
}
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 2 mars 2007 à 11:39
Tes motifs sont très généraux, et les options pattern.DOTALL et pattern.MULTILINE sont dangereuses dans le sens où le résultat risque d'être le fichier entier.
d'autre part avec <html.*>*</html>, une expression comme
<htmllllllllllllllllllllllllllllet autre chose>>>>>>>>>>>>>>>>>>>></html>
correspond aussi à ton motif.
jeanphi6
Messages postés33Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention24 juillet 2008 2 mars 2007 à 11:47
Euh pour les motifs j'avai vu sur le net, et comme cela fonctionnait lol j'ai laissé. Parce que si je voulais récupérer le contenu de la balise HTML, il me faut passer les lignes.
Ton exemple ne marche pas pour mon fichier html très basique
<html lang="fr">
<head> <title>Hello World </title> </head>
jeanphi6
Messages postés33Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention24 juillet 2008 2 mars 2007 à 12:00
J'arrive à un truc pas mal, mais avec deux patterns, mais je viens de tester avec un balise titleee, va falloir que je vois, sachant qu'il y a 3 sortes de balises <title>
__________________________________________________________
A.B. : La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler .../FONT>