Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    juillet 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : juillet 2002
    Messages : 82
    Points : 47
    Points
    47

    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 :
    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 :
    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 :
    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 :
    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 :
    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 du Club
    Homme Profil pro
    Inscrit en
    juillet 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : juillet 2002
    Messages : 82
    Points : 47
    Points
    47

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •