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

Web Perl Discussion :

HTML::Parser non fonctionnel


Sujet :

Web Perl

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut HTML::Parser non fonctionnel
    Bonjour,

    Toujours dans le cadre de mon projet de récupération de config d'équipement, je dois récupérer la liste Hardware et Software qui se trouve sur l'équipement.

    Comme celui-ci n'est joignable qu'en HTTP (pas de telnet ni ssh, vieil équipement...), j'utilise HTML:: Parser une fois la page récupérée.

    la page récupérée est du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <table width="100%" border="0">
    <tr><a name="shelf"></a><th class="entete"><!--b-->SHELF<!--e--></th></tr>
    <tr><td><pre class="spacePre">CTRL Code (selected):251252663-bd
    CTRL Code (reserve):251252663-au
    FPGA (selected):251252650-bb
    FPGA (reserve):251252650-ao
    GIG-E Code (selected):251464672-ae
    GIG-E Code (reserve):251464672-ad
     
    <br></pre></td></tr>
    </table>
    Mon code est le suivant:

    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
    # creation de mon parser
      my $parser = HTML::Parser->new();
     
      # definition des mes evenements
      $parser->handler( text  => sub { print shift."\n\n" if $i; },  "text" );  <= ici est le warning
      $parser->handler( start => sub { $i++ if shift eq 'table'; }, "tagname" );
      $parser->handler( end   => sub { $i-- if (shift eq 'table' and $i); } ,   "tagname" );
     
      $req = HTTP::Request->new(GET => "$host/invmsoft.htm");
     
      # execute la requete et recoit la reponse
      $res = $ua->request($req);
      die $res->status_line if not $res->is_success;
     
      $parser->parse_file($res->content);
      #print $res->content;
    J'ai juste un warning au lancement du script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Use of "shift" without parentheses is ambiguous
    Lorsque je décommente la dernière ligne du code donné, j'ai bien le code HTML de ma page, pas de souci. et d'ailleurs, afin de valider mon code et mes données, lorsque je décommente toujours, et que je redirige la sortie du script vers un fichier, pour le lire via un autre script, je n'ai aucun souci..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $  ./LWP_HTTP_2500.pl monHost > monHost_soft
    Warning: Use of "shift" without parentheses is ambiguous at ./LWP_HTTP_2500.pl line 68.
    $ ./PARSER_HTML_2500.pl monHost_soft 
    Warning: Use of "shift" without parentheses is ambiguous at ./PARSER_HTML_2500.pl line 20.
    code du deuxième script:
    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
    #!/usr/bin/perl 
    use strict; 
    use warnings;
     
    use HTML::Parser;
    use Data::Dumper;
     
    die ("Usage: $0 <n>\n")
      if ( !defined ($ARGV[0]) );
     
    my $i= 0;
    my $nb = 0;
     
    my $page = $ARGV[0];
     
    # creation de mon parser
    my $parser = HTML::Parser->new();
     
    # definition des mes evenements
    $parser->handler( text  => sub { print shift."\n\n" if $i; },  "text" );
    $parser->handler( start => sub { $i++ if shift eq 'table'; }, "tagname" );
    $parser->handler( end   => sub { $i-- if (shift eq 'table' and $i); } , "tagname" );
     
    $parser->parse_file($page);
    Du coup, serait-ce le warning qui poserait problème?

    Merci d'avance,

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 87
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    J'ai résolu mon petit souci en utilisant au lieu de parse_file()

    tout bêtement :p

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/05/2007, 17h48
  2. message HTML/XML non valide pour ie
    Par ep31 dans le forum Valider
    Réponses: 6
    Dernier message: 08/03/2006, 20h19
  3. Update non fonctionnel
    Par kissmytoe dans le forum Access
    Réponses: 7
    Dernier message: 07/03/2006, 18h37
  4. [REPORTS] Order BY non fonctionnel
    Par sdiack dans le forum Reports
    Réponses: 2
    Dernier message: 10/02/2006, 18h10
  5. Utilisation de HTML::Parser
    Par mobscene dans le forum Web
    Réponses: 6
    Dernier message: 27/10/2005, 13h57

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