Bonjour
Je souhaite récupérer les informations sur les liens contenus dans une
page html. Pour cela, j'utilise:
while ($content =~ /<a href=\"(.*?)\"\s(title="(.*?)")?>(.*?)<\/a>/mgi)
{
print "$1 -> $3 -> $4";
print "\n";
}
Je voudrais modifier cette ligne pour que je puisse récupérer les infos
par $1, $3 et $4 ET que cela supprime le texte cherché. En clair, je
veux récupérer les liens puis les supprimer de ma variable $content
J'ai donc essayé:
while ($content =~ s/<a href=\"(.*?)\"\s(title="(.*?)")?>(.*?)<\/a>//mgi)
Mais avec cette ligne, je ne peux afficher que les informations sur le
dernier lien. Je débute avec les expressions régulières. J'ai regardé la
partie de la donc correspondante, mais je ne vois pas ce qui correspond
à ce que je veux faire.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
laurent sommier
"julien" a écrit dans le message de news: 3f58e297$0$28878$
Bonjour Je souhaite récupérer les informations sur les liens contenus dans une page html. Pour cela, j'utilise: while ($content =~ /<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>/mgi) { print "$1 -> $3 -> $4"; print "n"; }
Je voudrais modifier cette ligne pour que je puisse récupérer les infos par $1, $3 et $4 ET que cela supprime le texte cherché. En clair, je veux récupérer les liens puis les supprimer de ma variable $content J'ai donc essayé: while ($content =~ s/<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>//mgi) Mais avec cette ligne, je ne peux afficher que les informations sur le dernier lien. Je débute avec les expressions régulières. J'ai regardé la partie de la donc correspondante, mais je ne vois pas ce qui correspond à ce que je veux faire.
c'est normal, le while n'est parcouru qu'une fois car tu fais une substitution globale (flag g, en une fois), essaye d'enlever le flag g, ça devrait fonctionner, ... comme suit
"julien" <julien@sobrier.net> a écrit dans le message de news:
3f58e297$0$28878$626a54ce@news.free.fr...
Bonjour
Je souhaite récupérer les informations sur les liens contenus dans une
page html. Pour cela, j'utilise:
while ($content =~ /<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>/mgi)
{
print "$1 -> $3 -> $4";
print "n";
}
Je voudrais modifier cette ligne pour que je puisse récupérer les infos
par $1, $3 et $4 ET que cela supprime le texte cherché. En clair, je
veux récupérer les liens puis les supprimer de ma variable $content
J'ai donc essayé:
while ($content =~ s/<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>//mgi)
Mais avec cette ligne, je ne peux afficher que les informations sur le
dernier lien. Je débute avec les expressions régulières. J'ai regardé la
partie de la donc correspondante, mais je ne vois pas ce qui correspond
à ce que je veux faire.
c'est normal, le while n'est parcouru qu'une fois car tu fais une
substitution globale (flag g, en une fois),
essaye d'enlever le flag g, ça devrait fonctionner, ... comme suit
"julien" a écrit dans le message de news: 3f58e297$0$28878$
Bonjour Je souhaite récupérer les informations sur les liens contenus dans une page html. Pour cela, j'utilise: while ($content =~ /<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>/mgi) { print "$1 -> $3 -> $4"; print "n"; }
Je voudrais modifier cette ligne pour que je puisse récupérer les infos par $1, $3 et $4 ET que cela supprime le texte cherché. En clair, je veux récupérer les liens puis les supprimer de ma variable $content J'ai donc essayé: while ($content =~ s/<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>//mgi) Mais avec cette ligne, je ne peux afficher que les informations sur le dernier lien. Je débute avec les expressions régulières. J'ai regardé la partie de la donc correspondante, mais je ne vois pas ce qui correspond à ce que je veux faire.
c'est normal, le while n'est parcouru qu'une fois car tu fais une substitution globale (flag g, en une fois), essaye d'enlever le flag g, ça devrait fonctionner, ... comme suit
Bonjour Je souhaite récupérer les informations sur les liens contenus dans une page html. Pour cela, j'utilise: while ($content =~ /<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>/mgi) { print "$1 -> $3 -> $4"; print "n"; }
Tu considère que l'attribut title est optionnel, mais pas l'espace qui le précède, tu impose donc qu'il y ait un espace après la valeur de l'attribut href, meme si il n'y a pas d'attribut title. Or ce n'est pas souvent le cas. En mettant un ? après le s, j'obtiens plein de résultat en apliquant ta regex sur une page web. Je suis parti du principe que $content contenait tout le texte HTML de la page. D'autre part, les quotes n'ont pas besoin d'être échapées.
In article <3f58e297$0$28878$626a54ce@news.free.fr>, julien wrote:
Bonjour
Je souhaite récupérer les informations sur les liens contenus dans une
page html. Pour cela, j'utilise:
while ($content =~ /<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>/mgi)
{
print "$1 -> $3 -> $4";
print "n";
}
Tu considère que l'attribut title est optionnel, mais pas l'espace qui
le précède, tu impose donc qu'il y ait un espace après la valeur de
l'attribut href, meme si il n'y a pas d'attribut title. Or ce n'est pas
souvent le cas. En mettant un ? après le s, j'obtiens plein de résultat
en apliquant ta regex sur une page web. Je suis parti du principe que
$content contenait tout le texte HTML de la page. D'autre part, les
quotes n'ont pas besoin d'être échapées.
Bonjour Je souhaite récupérer les informations sur les liens contenus dans une page html. Pour cela, j'utilise: while ($content =~ /<a href="(.*?)"s(title="(.*?)")?>(.*?)</a>/mgi) { print "$1 -> $3 -> $4"; print "n"; }
Tu considère que l'attribut title est optionnel, mais pas l'espace qui le précède, tu impose donc qu'il y ait un espace après la valeur de l'attribut href, meme si il n'y a pas d'attribut title. Or ce n'est pas souvent le cas. En mettant un ? après le s, j'obtiens plein de résultat en apliquant ta regex sur une page web. Je suis parti du principe que $content contenait tout le texte HTML de la page. D'autre part, les quotes n'ont pas besoin d'être échapées.
Manganneau Emmanuel
le Fri, 05 Sep 2003 12:17:45 +0000, julien a ecrit:
Bonjour
Bonjour,
Je souhaite récupérer les informations sur les liens contenus dans une
page html. Pour cela, j'utilise:
<snip>
Je débute avec les expressions régulières. J'ai regardé la partie de la donc correspondante, mais je ne vois pas ce qui correspond à ce que je veux faire.
Julien
Je ne te conseille pas de parser une page html avec des regexp, tu n'y arriveras pas. Je te conseille plutot :
#!/usr/bin/perl -w
use HTML::Parser; use strict; $a = sub { my $r=shift; my @href= grep /href/,keys(%$r); print $r->{$_},"n" for @href; } ;
my $p=HTML::Parser->new(); $p->handler(start=>$a,"attr"); $p->parse_file("/var/www/index.html");
C'est la seule manière propre de retrouver des liens comme : <A HREF="http://www.debian.org/Bugs/">Debian Bug Tracking System</A>.
le Fri, 05 Sep 2003 12:17:45 +0000, julien <julien@sobrier.net> a ecrit:
Bonjour
Bonjour,
Je souhaite récupérer les informations sur les liens contenus dans une
page html. Pour cela, j'utilise:
<snip>
Je débute avec les expressions régulières. J'ai regardé la partie de
la donc correspondante, mais je ne vois pas ce qui correspond à ce que
je veux faire.
Julien
Je ne te conseille pas de parser une page html avec des regexp, tu n'y
arriveras pas.
Je te conseille plutot :
#!/usr/bin/perl -w
use HTML::Parser;
use strict;
$a = sub {
my $r=shift;
my @href= grep /href/,keys(%$r);
print $r->{$_},"n" for @href;
} ;
my $p=HTML::Parser->new();
$p->handler(start=>$a,"attr");
$p->parse_file("/var/www/index.html");
C'est la seule manière propre de retrouver des liens comme :
<A
HREF="http://www.debian.org/Bugs/">Debian Bug Tracking System</A>.
le Fri, 05 Sep 2003 12:17:45 +0000, julien a ecrit:
Bonjour
Bonjour,
Je souhaite récupérer les informations sur les liens contenus dans une
page html. Pour cela, j'utilise:
<snip>
Je débute avec les expressions régulières. J'ai regardé la partie de la donc correspondante, mais je ne vois pas ce qui correspond à ce que je veux faire.
Julien
Je ne te conseille pas de parser une page html avec des regexp, tu n'y arriveras pas. Je te conseille plutot :
#!/usr/bin/perl -w
use HTML::Parser; use strict; $a = sub { my $r=shift; my @href= grep /href/,keys(%$r); print $r->{$_},"n" for @href; } ;
my $p=HTML::Parser->new(); $p->handler(start=>$a,"attr"); $p->parse_file("/var/www/index.html");
C'est la seule manière propre de retrouver des liens comme : <A HREF="http://www.debian.org/Bugs/">Debian Bug Tracking System</A>.