Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Web
Web Toutes vos questions sur la construction de pages web en Perl (CGI, Ajax, mod_perl, sessions, ...) Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 11h01   #1
Dra_Gun
Membre du Club
 
Homme
Inscription : juillet 2002
Messages : 79
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : juillet 2002
Messages : 79
Points : 48
Points : 48
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,
Dra_Gun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 14h32   #2
Dra_Gun
Membre du Club
 
Homme
Inscription : juillet 2002
Messages : 79
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : juillet 2002
Messages : 79
Points : 48
Points : 48
Bonjour,

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

tout bêtement :p
Dra_Gun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h22.


 
 
 
 
Partenaires

Hébergement Web