Parser un fichier HTML

McCrazy Messages postés 2 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 1 février 2010 - 1 févr. 2010 à 11:54
McCrazy Messages postés 2 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 1 février 2010 - 1 févr. 2010 à 12:00
Bonjour ,

J'essaie de parser un fichier HTML , pour y extraire des infos : Problème je ne sais comment m'y prendre car mes connaissances étant limité sur du HTML ,Perl , ....

Puisque j'apprends également du perl , alors j'ai pensé que les Regex , pourrait m'aider .

Ce que je veux faire exactement c'est trouver une expression réguliere qui me permette de 'matcher' les lignes d'un tableau , et ensuite pouvoir extraire les infos contenu dans les colonnes .

Voici un exemple du code HTML (correspondant à une ligne de tabeau)
(juste préciser que j'ai une cinquantaine de ligne dans ce genre ...)

]<tr>
<td>1</td>
<td>
mx1.messagelabs.com

</td>
<td>
MX_servers

</td>
<td>smtp

</td>
<td>Accept</td>
<td>

</td>
</tr>

une expression régulière pourrait etre celle ci : le problème c'est qu'elle correspond à plusieurs lignes dans le fichier HTML , alors je cherche une autre solution.. et aussi comment je peux récuperer les données dans les colonnes de cette ligne ?

]#!/usr/bin/perl
use strict;
use warnings;


# Sous-routine permettant d'entrée le fichier en CLI
sub obtient_ligne{
  #demande , lit , "chompe" et renvoie une ligne d'entrée 
  print $_[0];
  chomp(my $ligne = <STDIN>);
  $ligne ;
}

my $fichierHTML = &obtient_ligne (" votre fichier HTML ?");
  open IN ,$fichierHTML 
  or die "Impossible d'ouvrir '$fichierHTML ' en entrée : $!";
  
  
  
  while (<>) {
  if (/<tr><td>[0-9]<\/td><td>[a_zA-Z0-9_]
<\/td><td>[a_zA-Z0-9_]
<\/td><td>[a_zA-Z0-9_]<\/a>
<\/td><td>AcceptŠDeny<\/td><td>
<\/td>[a_zA-Z0-9_]<\/tr>/) {
    print ;
  }
}


quelqu'un pourrait -il m'aider ?
merci ...

(je constate que ma regex de la boucle if , est mise sous plusieurs lignes , alors que moi je l'ai mise sur une ligne ...)

1 réponse

McCrazy Messages postés 2 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 1 février 2010
1 févr. 2010 à 12:00
Salut ,

je ne sais pas pourquoi , mon code perl , a été mal formaté ainsi , c'est pour cela que je rajoute ces lignes apparu bizzarement!

while (<>) {
if (/<tr><td>[0-9]<\/td><td>[a_zA-Z0-9_]
<\/td><td>[a_zA-Z0-9_]
<\/td><td>[a_zA-Z0-9_]<\/a>
<\/td><td>AcceptŠDeny<\/td><td>
<\/td>[a_zA-Z0-9_]<\/tr>/) {
print ;
}
}
0