GNT sans publicité, site mobile, fonctionnalitées exclusives...

faire du jquery en perl...

Le
luc2
ha ha, j'vous ai bien eu ! non, je ne cherche pas a faire du jquery en perl !

bonjour, vous allez bien ? il fait pas trop chaud chez vous ? tant mieux !

voici ma question :

my $document_html = '<html><head></head><body><div class="content">bonjour</div>
</body></html>';
my $message = get_html( '.content', $document_html );
print "$message"; # j'aimerais que ca affiche "bonjour"

n'y aurait-il pas une librairie pour me permettre d'avoir une fonction comme ce
get_html() ? ou pour recuperer le contenu de cette balise sans trop me fatiguer
? il y a une tonne de facons de faire, mais je voudrais privilegier le fait de
faire le moins d'effort possible, et le fait de le faire proprement.
Lire les 8 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #23677801
À (at) 23 Aug 2011 12:45:11 GMT,
luc2
voici ma question :

my $document_html = '<html><head></head><body><div class="content">bonjour</div>
</body></html>';
my $message = get_html( '.content', $document_html );
print "$messagen"; # j'aimerais que ca affiche "bonjour"

n'y aurait-il pas une librairie pour me permettre d'avoir une fonction
comme ce get_html() ?



Un parser HTML fera l'affaire : HTML::Parser ou XML::Twig, par exemple...

--
Paul Gaborit - Perl en français -
Jean-Louis Morel
Le #23677851
Le 23/08/2011 14:45, luc2 a écrit :

voici ma question :

my $document_html = '<html><head></head><body><div class="content">bonjour</div>
</body></html>';
my $message = get_html( '.content', $document_html );
print "$messagen"; # j'aimerais que ca affiche "bonjour"

n'y aurait-il pas une librairie pour me permettre d'avoir une fonction comme ce
get_html() ? ou pour recuperer le contenu de cette balise sans trop me fatiguer
? il y a une tonne de facons de faire, mais je voudrais privilegier le fait de
faire le moins d'effort possible, et le fait de le faire proprement.



On peut utiliser HTML::TokeParser par exemple:

#!/usr/bin/perl
use strict;
use warnings;
use HTML::TokeParser;

my $document_html = '<html><head></head><body>
<div class="content">bonjour</div></body></html>';

sub get_html {
my ($class, $html) = @_;
my $p = HTML::TokeParser->new($html);
if (my $tag = $p->get_tag('div')) {
if ($tag->[1]->{class} eq $class) {
return $p->get_text;
}
}
}

my $message = get_html( 'content', $document_html );
print "$messagen";

__END__

C'est juste un exemple à adapter. On prend la première balise <div>
et on suppose qu'elle à l'attribut 'class' défini... etc
HTH

--
J-L
http://www.bribes.org/perl/
Denis Dordoigne
Le #23679221
Bonjour,

my $document_html = '<html><head></head><body><div class="content">bonjour</div>
</body></html>';
my $message = get_html( '.content', $document_html );
print "$messagen"; # j'aimerais que ca affiche "bonjour"



Si l'idée est juste de récupérer le texte entre les balises, le plus simple est d'utiliser une bête expression rationnelle du type :
my ($message) = $document_html =~ />([^s<>]+)</;

--
Denis Dordoigne
Membre de l'April - promouvoir et défendre le logiciel libre - april.org
Rejoignez maintenant plus de 5 000 personnes, associations,
entreprises et collectivités qui soutiennent notre action
Emmanuel Florac
Le #23679441
Le Wed, 24 Aug 2011 07:43:26 +0200, Denis Dordoigne a écrit:


Si l'idée est juste de récupérer le texte entre les balises, le plus
simple est d'utiliser une bête expression rationnelle du type :
my ($message) = $document_html =~ />([^s<>]+)</;



Sans jamais oublier qu'on ne peut pas analyser un langage à balises
correctement avec des regexps, n'est ce pas? n'est ce pas?

Voir la "légendaire" première réponse :

xhtml-self-contained-tags>

--
The reasonable man adapts himself to the world; the unreasonable one
persists in trying to adapt the world to himself. Therefore, all
progress depends on the unreasonable man.
George Bernard Shaw
Emmanuel Florac
Le #23679951
Le Wed, 24 Aug 2011 09:02:06 +0200, Denis Dordoigne a écrit:

La regexp dans mon message était donnée dans un contexte (ligne
d'introduction commençant par un "si" au-dessus), qui excluait
totalement l'analyse des balises (il s'agit justement d'exclure les
balises de l'analyse).



Oui mais l'OP parle apparemment de récupérer le contenu d'un div précis,
auquel cas il ne peut pas couper à une analyse du HTML correcte s'il veut
un résultat fiable.

--
"Dope will get you through times of no money better
than money will get you through times of no dope."
Freewheelin' Franklin.
Publicité
Suivre les réponses
Poster une réponse
Anonyme