IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Besoin d'aide écriture dans fichier


Sujet :

Modules Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut Besoin d'aide écriture dans fichier
    Bonjour,
    J'essaye d'utiliser HTML:arser (avec beaucoup de mal, fo l'avouer...malgré la doc sur cpan) et donc je voudrais extraire du texte compris entre certaines balises comme par exemple le texte compris entre les balises <td></td>.
    J'ai donc trouvé ce bout de code qui pourrait être un début.
    http://www.developpez.net/forums/sho...ML%3A%3APArser

    Du coup, j'ai plusieurs questions, pourriez vous m'aider à modifier ce bout de code??
    Et enfin, je voudrais mettre le résultat dans un fichier texte pour commencer, pour tester puis à terme dans une base de données mysql.
    J'ai vu plusieurs possibilités comme celle-ci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    open (FILE,'>C:/sanstag.txt') || die "Impossible d'écrire : $!";
    While () {
       print FILE $text;
    }
    close(FILE);
    Et pour intégrer ça dans le bout de code, ça me donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    use strict;
    use diagnostics;
    use LWP::Simple;
    use Data::Dumper;
    use HTML::Parser ();
     
    my $code = get('blabla.html');
     
    {
      my $in_object = 0;
     
    sub start {
        my ($tag, $text) = @_;
        if( not $in_object ){
            if( $tag eq 'body' ) {
                print FILE $text;
                $in_object++;
            }
        } else {
            print FILE $text;
        }
    }
     
      sub end {
        my ($tag, $text) = @_;
        if( $in_object ) {
          print FILE $text;
          $in_object-- if( $tag eq 'body' );
        }
      }
     
      sub text {
        my $text = shift;
        if( $in_object ){
          print FILE $text;
        }
      }
    }
    open (FILE,'>C:/fichier1.txt') || die "Impossible d'écrire : $!";
     
    my $p = HTML::Parser->new( api_version => 3,
                             start_h => [\&start, "tagname, text"],
                             end_h   => [\&end,   "tagname, text"],
                             text_h => [\&text, "text"]
                           );
     
    $p->parse( $code );
     
    close(FILE);
    ce qui ne marche pas....

    Voilà, merci d'avance de m'aider!
    Virigine

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Hello,

    déjà pour commencer à t'aiguiller un peu, je relève une erreur de syntaxe à l'ouverture de ton fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open (FILE,'>C:/sanstag.txt') || die "Impossible d'écrire : $!";
    Là, virtuellement, tu demandes à Perl d'ouvrir un fichier qui se nommerait >C:/sanstag.txt. Le die( ) risque de rentrer rapidement en action

    à remplacer comme suit :

    open (FILE,">C:/sanstag.txt") || die "Impossible d'écrire : $!";

    Ce dont des double quote qu'il faut mettre et non des simples.

    Ensuite,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While () {
       print FILE $text;
    }
    Cherches-tu réellement à produire une boucle infinie (while (rien)) ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta réponse Arioch,
    Effectivement, ça va mieux avec des " ". D'ailleurs c'est étonnant que le die() ne se soit pas déclenché...
    Donc, maintenant, le script marche mieux, mais j'ai un nouveau pbme:
    Je ne veux pas sélectionner le texte compris entre les balises 'body' comme c'est le cas dans le code qui suit mais plutot sélectionner le texte compris entre les balises <div class="texteblancgras"></div> ou <TD width="90%" bgcolor="#DCDFE7"></TD> etcetc...
    Et quand j'essaye de remplacer simplement le en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tag eq 'div class="texteblancgras"'
    , ça ne marche plus, apparemment, il trouve pas la balise en question....

    Vous avez des suggestions?? j'ai encore fait une annerie?
    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #!c:/perl/bin/Perl.exe
     
    use strict;
    use diagnostics;
    use LWP::Simple;
    use Data::Dumper;
    use HTML::Parser ();
     
    my $code = get('index.html');
     
    {
      my $in_object = 0;
     
    sub start {
        my ($tag, $text) = @_;
        if( not $in_object ){
            if( $tag eq 'div class="titreblanc"' ) {
                print FILE $text;
                $in_object++;
            }
        } else {
            print FILE $text;
        }
    }
     
      sub end {
        my ($tag, $text) = @_;
        if( $in_object ) {
          print FILE $text;
          $in_object-- if( $tag eq 'div' );
        }
      }
     
      sub text {
        my $text = shift;
        if( $in_object ){
          print FILE $text;
        }
      }
    }
    open (FILE,">C:/sanstag.txt") || die "Impossible d'écrire : $!";
     
    my $p = HTML::Parser->new( api_version => 3,
                             start_h => [\&start, "tagname, text"],
                             end_h   => [\&end,   "tagname, text"],
                             text_h => [\&text, "text"]
                           );
     
    $p->parse( $code );
     
    close(FILE);
    Merci pour vos réponses....
    Virginie

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Bon finalement,
    j'ai trouvé la solution sur le net et là voici pour ceux que ça peut aider...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    #!c:/perl/bin/Perl.exe
     
    use strict;
    use diagnostics;
    use LWP::Simple;
    use Data::Dumper;
    use HTML::Parser ();
     
    my $code = get('index.html');
     
    {
      my $in_object = 0;
     
      sub start {
         my ($tag,$args, $text) = @_;
          if( not $in_object ){
              if ($tag eq 'div') {
                if ($args->{class} eq 'titreblanc' || $args->{class} eq 'texteblancgras') {
                  $in_object++;
                }
              } elsif ($tag eq 'td') {
                if ($args->{bgcolor} eq '#DCDFE7') {
                  $in_object++;
                }
              }
          } else {
            print FILE $text;
          }
      }
     
      sub end {
          my ($tag, $text) = @_;
          if( $in_object ) {
            $in_object-- if( $tag eq 'div' || $tag eq 'td');
          }
      }
     
      sub text {
          my $text = shift;
          if( $in_object ){
            print FILE $text."<br>";
          }
      }
    }
    open (FILE,">C:/sanstag.txt") || die "Impossible d'écrire : $!";
     
    my $p = HTML::Parser->new( api_version => 3,
                             start_h => [\&start, "tagname,attr,text"],
                             end_h   => [\&end,   "tagname, text"],
                             text_h => [\&text, "text"]
                           );
     
    $p->parse( $code );
     
    close(FILE);
    ça me permet donc de récupérer le contenu des champs balisés par
    <div class="titreblanc">
    <div class="texteblancgras">
    <td bgcolor="#DCDFE7">

    Merci et bonne soirée!
    Virginie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Huffman et écriture dans fichier
    Par kuja2053 dans le forum C
    Réponses: 6
    Dernier message: 04/05/2007, 14h52
  2. Besoin d'aide avec les fichier htaccess et htpasswd
    Par Polux000 dans le forum Apache
    Réponses: 2
    Dernier message: 26/01/2006, 00h05
  3. Réponses: 2
    Dernier message: 15/11/2005, 09h58
  4. Besoin d'aide lié à un fichier xml et un tableau a charger..
    Par jjs dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/07/2005, 14h03
  5. besoin d'aide fonction avec fichier (debutant)
    Par boby61 dans le forum Débuter
    Réponses: 9
    Dernier message: 14/03/2005, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo