#1 Le 22/06/2006, à 18:57
- tinkywinky
[Résolu] [Java] Extraire le texte contenu dans une table HTML
Bonjour,
alors voilà, je cherche un moyen d'extraire le texte d'une table HTML. Idéalement, il me faudrait quelque chose qui prend en entrée un fichier HTML, et qui me rend un truc du genre String[][] contenant les chaînes de la table (en admettant que le HTML contient uniquement une table).
Je sais que je peux le faire moi-même en parsant le fichier HTML, etc, mais je me demandait s'il existait une lib quelque part qui permet de faire ça ?
Si non, est-ce possible de le faire avec des regular expressions ?
<TABLE>
<TR><TH>Titre 1</TH><TH>Titre 2</TH></TR>
<TR><TD>Data 1</TD><TD>Data2</TD></TR>
(etc...)
</TABLE>
devidrait
Object[][] table = new Object[][] { { "Titre 1", "Titre 2"}, { "Data 1", "Data2" }, ...};
Merci
Dernière modification par tinkywinky (Le 03/07/2006, à 08:34)
Dell XPS M1710, Core 2 Duo 2.16 Ghz, 1 Go RAM, NVidia 7900 GTX 512Mo (1.0.9755)
Debian Unstable, Kernel 2.6.21, KDE 3.5.6, Beryl SVN
Hors ligne
#2 Le 22/06/2006, à 19:18
- tinkywinky
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
J'ai trouvé JTidy (http://jtidy.sourceforge.net, pas testé), qui permet de convertir un fichier HTML en document DOM, donc beaucoup plus facile à inteprêter. Mais je suis ouvert à toutes autres proposition
Dernière modification par tinkywinky (Le 22/06/2006, à 19:18)
Dell XPS M1710, Core 2 Duo 2.16 Ghz, 1 Go RAM, NVidia 7900 GTX 512Mo (1.0.9755)
Debian Unstable, Kernel 2.6.21, KDE 3.5.6, Beryl SVN
Hors ligne
#3 Le 22/06/2006, à 20:14
- Kiraa
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
j'utilise pas java , mais j'aurai tendance a conseiller d'utiliser un parser xml (ce que je fait d'ailleur en ce moment avec ruby)
Hors ligne
#4 Le 22/06/2006, à 20:30
- tinkywinky
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
J'ai essayé de le parser avec DOM, mais le problème est que le HTML n'est pas assez stricte... par example, dans un fichier j'ai "<TABLE BORDER=1>" et le parser se plaint que la valeur de l'attribut n'est pas entre guillemets, + d'autre choses encore (il aime pas les tags non fermés genre <BR>...).
Dell XPS M1710, Core 2 Duo 2.16 Ghz, 1 Go RAM, NVidia 7900 GTX 512Mo (1.0.9755)
Debian Unstable, Kernel 2.6.21, KDE 3.5.6, Beryl SVN
Hors ligne
#5 Le 22/06/2006, à 20:33
- Kiraa
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
cré ton propre parser dans ce cas , si son utilisation est limité a un certain type de code html , c'est facile à faire
Hors ligne
#6 Le 25/06/2006, à 22:14
- Koo Koolen
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
La grammaire de HTML étant très peu stricte je crois que tu n'as pas d'autres choix que de créé ton propre parseur.
Par contre, rien ne t'empêche d'utiliser des expressions régulières pour chercher ce que tu veux. Java fait ça très bien grâce au package java.util.regex
Hors ligne
#7 Le 29/06/2006, à 18:38
- Bruc
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
Pourquoi ne pas utiliser un module en perl ou en python pour parser le xml?
Voici un lien pour le premier langage pour parser du xml :
http://search.cpan.org/search?query=xml+parser&mode=all
Il existe également de très bons modules en perl pour parser le HTML.
Précise plus tes besoins en fonction desquelles je pourrai te donner les liens vers d'excellents modules qui font ce travail impeccablement.
Hors ligne
#8 Le 29/06/2006, à 20:20
- Kiraa
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
La grammaire de HTML étant très peu stricte je crois que tu n'as pas d'autres choix que de créé ton propre parseur.
Par contre, rien ne t'empêche d'utiliser des expressions régulières pour chercher ce que tu veux. Java fait ça très bien grâce au package java.util.regex
d'un autre coté , je vois mal comment on peut parser quelque chose sans regexp (enfin si mais dès que ça devient dynamique c'est impossible)
Hors ligne
#9 Le 30/06/2006, à 07:55
- bobuse
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
C'es tclair que je choisirai python pour réaliser ce genre de tâche, car plus rapide à développer.
Et une bonne regexp serait le plus simple dans ton cas, effectivement.
une regexep du genre <TR><TD>([^<]*)</TD><TD>([^<]*)</TD></TR>, en rajoutant la possibilité d'avoir les minuscules : <[Tt][Rr]><...
genre ...
Hors ligne
#10 Le 02/07/2006, à 16:23
- Bruc
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
En Perl, deux modules pas mal du tout pour faire ce genre de tâches :
HTML::TagReader
Une page d'aide en français très intéressante :
http://linuxfocus.org/Francais/January2003/article269.shtml
HTML::TagParser
Hors ligne
#11 Le 02/07/2006, à 16:43
- tinkywinky
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
Merci pour vos réponses. Seulement, je dois utiliser Java et pas autre chose (environnement de travail oblige...). La librairie dont je parle plus haut (JTîdy) a résolu mon "problème"
Dell XPS M1710, Core 2 Duo 2.16 Ghz, 1 Go RAM, NVidia 7900 GTX 512Mo (1.0.9755)
Debian Unstable, Kernel 2.6.21, KDE 3.5.6, Beryl SVN
Hors ligne
#12 Le 02/07/2006, à 17:16
- Bruc
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
Ok.
Ce n'est pas trop lourd d'utiliser du java pour ce genre d'application?
Hors ligne
#13 Le 03/07/2006, à 08:33
- tinkywinky
Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML
Bah non ça va je trouve... je suis chargé de faire des plugins pour un logiciel particulier et tout est en Java, donc j'ai pas le choix Là en l'occurence je bosse sur un plugin pour importer des données d'un certain type (CSV, XML, et, justement, HTML) dans une database.
Dell XPS M1710, Core 2 Duo 2.16 Ghz, 1 Go RAM, NVidia 7900 GTX 512Mo (1.0.9755)
Debian Unstable, Kernel 2.6.21, KDE 3.5.6, Beryl SVN
Hors ligne