Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

récupération contenu texte HTML

4 réponses
Avatar
Newsgroups
Bonjour,

je souhaite r=E9cup=E9rer le contenu textuel d'un site web en vue de le
passer vers une base Mysql. Je souhaite donc faire un script qui me
g=E9n=E9rera des requetes sql.

Seulement, je ne comprends vraiment pas pourquoi cela ne fonctionne
pas...

j'ai fais ces quelques lignes : (j'ai pas mis tous le code perl, je n'ai
mis que l'essentiel)

$content =3D "<p align=3D"left"><font face=3D"Arial Narrow"><br>
c'est une Soci=E9t=E9 d'Ing=E9nierie
sp=E9cialis=E9e dans la r=E9alisation ... Pour
plus d'informations :<br></font></p>";

# il y =E0 un saut de ligne apr=E8s le "<br>", un autre apr=E8s le
# "Ing=E9nierie", et un autre apr=E8s le "Pour"

if ($content =3D~ /<p align=3D"left"><font face=3D"Arial Narrow"><br>(.*?)P=
our
\nplus d'informations :<br>/gi) {
my ($texte) =3D $1;
print "\ttexte=3D".$texte."\n";
}

=E0 l'ex=E9cution, il ne m'affiche rien ($texte est vide)

O=F9 est ce que j'ai fais une erreur ? dans l'expression r=E9guli=E8re ?
J'ai essay=E9 pas mal de possibilit=E9s avec les sauts de lignes etc, etc..
mais je n'y arrive pas.

4 réponses

Avatar
alian
$content = "<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>";
...


à l'exécution, il ne m'affiche rien ($texte est vide)


Ca s'execute ca ??
Soit tu remplaces tes " par ", ou tu fais:

$content = <<EOF
<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>
EOF

Avatar
Klaus
Newsgroups wrote:
Bonjour,

je souhaite récupérer le contenu textuel d'un site web en vue de le
passer vers une base Mysql. Je souhaite donc faire un script qui me
générera des requetes sql.

Seulement, je ne comprends vraiment pas pourquoi cela ne fonctionne
pas...

j'ai fais ces quelques lignes : (j'ai pas mis tous le code perl, je n'ai
mis que l'essentiel)

$content = "<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>";

# il y à un saut de ligne après le "<br>", un autre après le
# "Ingénierie", et un autre après le "Pour"

if ($content =~ /<p align="left"><font face="Arial Narrow"><br>(.*? )Pour
nplus d'informations :<br>/gi) {
my ($texte) = $1;
print "ttexte=".$texte."n";
}

à l'exécution, il ne m'affiche rien ($texte est vide)

Où est ce que j'ai fais une erreur ? dans l'expression régulière ?
J'ai essayé pas mal de possibilités avec les sauts de lignes etc, etc ..
mais je n'y arrive pas.


Le problème est que la construction (.*?) dans la regex ne reconnaît
pas les "n", pour que les "n" sont reconnus, il faut rajouter
l'option "s" à la fin du regex derrière le "/gi":

.... <br>/gis ....

voir aussi http://perl.enstimac.fr/DocFr/perlre.html
++++++++++++++++++++++++++++++++++++++++++
++ [option] s - Permet de traiter une chaîne comme une seule
++ ligne. Le caractère "." reconnaît alors n'importe quel caractère,
++ même une fin de ligne qui normalement n'est pas reconnue.
++++++++++++++++++++++++++++++++++++++++++

Avatar
Newsgroups

Le problème est que la construction (.*?) dans la regex ne reconnaît
pas les "n", pour que les "n" sont reconnus, il faut rajouter
l'option "s" à la fin du regex derrière le "/gi":


ok, ca marche !

merci.

Avatar
Newsgroups
$content = "<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>";
...


à l'exécution, il ne m'affiche rien ($texte est vide)


Ca s'execute ca ??


Vous avez raison, j'ai simplement simplifié le code pour mon message.
En fait, le texte est un open() sur un fichier html local


Soit tu remplaces tes " par ", ou tu fais:

$content = <<EOF
<p align="left"><font face="Arial Narrow"><br>
c'est une Société d'Ingénierie
spécialisée dans la réalisation ... Pour
plus d'informations :<br></font></p>
EOF