[all]Extraction de l'information

Extraction de l'information [all] - Divers - Programmation

Marsh Posté le 13-09-2007 à 11:28:44    

Bonjour à tous,
Voila je commencerai pas dire que je suis débutante....
 
voila j'ai un logiciel qui me recupere des pages internets d'un site en particulier (donc toujorus au meme format) avec ce logiciel j'ai la possibilité de lancer un programme à chaque page découverte (à la condition que ce programme finit par un .EXE :sweat: ). Donc mon problème est que j'aimerai recuperer uniquement l'information textuelle de ces articles mais quel languages utiliser ? C, Batch(très limiter pour extraction de donnée)?,Bash(ca serait super facile à faire...), perl ? sachant que ce petit programme doit pouvoir etre à la fin convertir en .exe :'(
 
voila je tourne en bourrique si qqun à une idée, je vous en serai reconnaissante
 
ps : voici le format du fichier .html :
<td class="avistxt" width="290">On pourrait dire qu'on trouve ....... ....un magazin de mec...</td>
j'aimerais juste recuperer : On pourrait dire qu'on trouve ....... ....un magazin de mec...
 
merci d'avance à vous


Message édité par ProjetGTR le 13-09-2007 à 11:37:23
Reply

Marsh Posté le 13-09-2007 à 11:28:44   

Reply

Marsh Posté le 13-09-2007 à 11:37:35    

perl me parait pas mal.
sino en C++ ou enC doit y avoir des bibliothèques de parsing HTML qui ferait ça.
Mais bon, ca rete de la manip de etxte, donc je prefererais perl.

Reply

Marsh Posté le 13-09-2007 à 11:41:51    

minc alors c'est bien sur PERL que j'en connais le moins :'(
est ce que le fichier.pl pourra être converti facilement en .exe ?
est ce que ca me force à avoir un interpreteur perl sur mon windows ?

Message cité 1 fois
Message édité par ProjetGTR le 13-09-2007 à 11:42:09
Reply

Marsh Posté le 13-09-2007 à 11:43:25    

+1 pour perl
 
Après tu pourra facilement convertir tes programmes perl en exécutables indépendants à l'aide de PAR::Packer


---------------
TriScale innov
Reply

Marsh Posté le 13-09-2007 à 11:46:56    

ProjetGTR a écrit :

minc alors c'est bien sur PERL que j'en connais le moins :'(

Ca s'apprend vite... (même si c'est un peu déroutant au début quand on est habitué à d'autres langages comme le C)

 
ProjetGTR a écrit :

est ce que le fichier.pl pourra être converti facilement en .exe ?

Cf mon post du dessus qui a croisé le tien.

 
ProjetGTR a écrit :

est ce que ca me force à avoir un interpreteur perl sur mon windows ?

Oui pour développer ton programme. Ensuite, une fois que tu as généré un binaire exécutable, tu peux le faire tourner sur n'importe quelle machine.
C'est un peu comme en C : tu as besoin du compilateur pour développer. Ensuite tu peux distribuer l'exécutable et l'exéctuer sans avoir besoin de compilateur.


Message édité par franceso le 13-09-2007 à 11:47:36

---------------
TriScale innov
Reply

Marsh Posté le 13-09-2007 à 12:54:43    

Merci de vos réponses :) , j'ai suivi vos conseils et je me lance dans l'apprentissage de PERL... ce qui m'amene à un autre souci :)
 

Code :
  1. #!/usr/bin/perl
  2. use strict; use warnings;
  3. use HTML::Parser;
  4. my $page = "./essai.html";
  5. # création de mon parser
  6. my $parser = HTML::Parser->new();
  7. # définition des mes evenements
  8. $parser->handler( text  => \&text,  "dtext" );
  9. $parser->handler( start => \&start, "tagname,attr" );
  10. $parser->handler( end   => \&end,   "tagname" );
  11. $parser->parse($page);
  12. {
  13.     my $in_span_textegras;
  14.     my @data;
  15.    
  16.     sub start {
  17.         my ($tag, $attr) = @_;
  18.         $in_span_textegras++
  19.             if $tag eq 'td' and $attr->{class} eq 'avistxt';
  20.     }
  21.    
  22.     sub end {
  23.         my ($tag) = @_;
  24.         $in_span_textegras--
  25.             if $tag eq 'td' and $in_span_textegras;
  26.     }
  27.    
  28.     sub text {
  29.         my ($text) = @_;
  30.         push @data, $text
  31.           if $in_span_textegras;
  32.     }
  33.    
  34. }


voila le code que j'ai maintenant, j'ai utilisé le parsing du module HTML ::Parser et tente de recuperer uniquement mon txt mais apparement ce code ne marche pas :'( si vous voyez l'erreur n'hésiter pas :)


Message édité par ProjetGTR le 13-09-2007 à 12:55:12
Reply

Marsh Posté le 13-09-2007 à 13:55:51    

si il ne marche pas, c'est surement que tu ne lui a pas donnr de jambes :o
 
Si par contre, il ne fonctionne pas, pourrais tu nous dire si il s'agit d'une erreur d'interpretation ou d'execution ?

Reply

Marsh Posté le 13-09-2007 à 14:06:34    

Enfait ce programme ne retourne rien,
Je tappe dans ma console cmd (je suis sous windows) :

Code :
  1. Perl test3.pl


Il me rend absolument rien donc apparement aucune erreur :s


Message édité par ProjetGTR le 13-09-2007 à 14:07:09
Reply

Marsh Posté le 13-09-2007 à 14:08:33    

commence par faire afficher des trucs à tes fonctions start, end, text pour voir ce qui se passe et isoler un peu plus le problème.


---------------
TriScale innov
Reply

Marsh Posté le 14-09-2007 à 11:43:46    

Hum, après pas mal de test :s, j'arrive à extraire mon texte mais j'ai toujours plien d'erreurs lors de l'excution ... si quelqu'un à une idée, je pense que ca doit vraiment être rien :s
 
à chaque test, voila ce qui en sort :  
 

Citation :

Use of uninitialized value in string eq at test2.pl line 31.
Use of uninitialized value in string eq at test2.pl line 31.
Use of uninitialized value in string eq at test2.pl line 31.
etc..


 
voici le code (J'ai finalement opté pour un accés directe à internet) :
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use LWP::Simple;
  5. use HTML::Parser;
  6. use HTML::Form;
  7. my $page = get( "http://toluna.fr/gradignan_est_parfait-av-919318.html" );
  8. # création de mon parser
  9. my $parser = HTML::Parser->new();
  10. # définition des mes evenements
  11. $parser->handler( text => \&text, "text" );
  12. $parser->handler( start => \&start, "tagname,attr" );
  13. $parser->handler( end => \&end, "tagname" );
  14. $parser->parse($page);
  15. print &get_data();
  16. $parser->eof;
  17. {
  18.  my $in;
  19. my @data;
  20.    sub start {
  21.       my ($tag,$attr) = @_;
  22.       $in++ if ($tag eq 'td' and $attr->{class} eq 'avistxt');
  23.    }
  24.  sub end {
  25.       my ($tag) =  @_;
  26.       $in-- if ($tag eq 'td' and $in='1');
  27.    }
  28.    sub text {
  29.       my ($text) =  @_;
  30.       push @data, $text if ($in );
  31.    }
  32.    sub get_data {
  33.  #print "in : ".$in;
  34.       return @data;
  35.    }
  36. }
  37. exit;


Message édité par ProjetGTR le 14-09-2007 à 14:49:52
Reply

Marsh Posté le 14-09-2007 à 11:43:46   

Reply

Marsh Posté le 17-09-2007 à 09:07:00    

ah ! biensur, C'est parce que tous tes td n'ont pas une classe !!!! :)
[edit]
erf c'etait de courte durée :p
maintenant j'ai mon fichier.pl qui marche impeccable, je me suis intéressé à la création de mon .exe
 
donc voila les manips que j'ai faite :

Code :
  1. ppm install PAR
  2. pp -o test2.exe test2.pl


 

Code :
  1. Compress::Zlib object version 1.22 does not match
  2. oader/0x8b1100/DynaLoader.pm line 225.
  3. Compilation failed in require at /loader/0x8b1100/
  4. BEGIN failed--compilation aborted at /loader/0x8b1
  5. Compilation failed in require at par.pl line 252.


 
:s une petite idée ?


Message édité par ProjetGTR le 17-09-2007 à 09:07:27
Reply

Marsh Posté le 17-09-2007 à 14:28:20    

Apparement ma version de PAR est la 0.63, il me faut passer en 0.85...
Comment puisse je faire pour passer dans cette version alors que ppm me propose uniquement la vieille version ??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed