Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/06/2006, à 19: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 wink

Dernière modification par tinkywinky (Le 03/07/2006, à 09: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, à 20: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 wink

Dernière modification par tinkywinky (Le 22/06/2006, à 20: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, à 21: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, à 21: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, à 21: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, à 23: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, à 19: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, à 21:20

Kiraa

Re : [Résolu] [Java] Extraire le texte contenu dans une table HTML

Koo Koolen a écrit :

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, à 08: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, à 17: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, à 17: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" wink


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, à 18: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, à 09: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 tongue 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