Récupérer des mots d'un source HTML
Bonjour à tous,
Je doit récupérer les mots d'une page HTML en langage C.
Pour simplier le problème, mon programme doit tout simplement ignorer tout texte compris entre les caractères < et > qui sont des instructions HTML. Je dois donc récupérer les mots à l'extérieur des caractères < et >. Les mots sont délimités par des espaces. On se retrouve donc avec des expressions du type:
<blablablabla>mot1 mot2 mot3<blablablabla>mot 4<blablablabla>mot5 mot6...
J'ai commencé à écrire une petite fonction mais il y a une couille dans le paté apparement. Je suis obligé de constituer un mot en récupérant les caractères 1 à 1 tant que je n'ai pas rencontré d'espace et que je suis à l'extérieur des caractères < et > . Apparement ce qu'il y a dans mon buffer ce n'est pas ce que je souhaite à savoir un mot. Je stockerai plus tard tous les mots dans un buffer. Pour le moment je raisonne à l'echelle d'un mot;
voici ma fonction:
//---- Fonction qui va extraire les mots non compris entre les caractères < et >
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 25 26 27 28 29 30
| void extraire_mot(FILE*)
{
bool fCrochet = FALSE; // Initialisation du Flag.
char buffer_mot[40]; // Buffer contenant le mot constitué par ajout de caractères.
char bData; // Variable locale qui contient le caractère en cours.
int i;
do
{
bData = fgetc(fichier); // Lecture d'un caractère.
if (bData == '<') // Si le caractère rencontré est '<' positionnement du FLAG à '1'.
{
fCrochet = TRUE;
}
else if (bData == '>' && fCrochet == TRUE) // Si le caractère en cours '>' et que le FLAG est vrai.
{
fCrochet = FALSE; // Positionnement du Flag à '0'.
if(bData != ' ') // Tant que le caractère espace n'est pas rencontré.
{
buffer_mot[i++] = bData; // Récupération des lettres formants un mot.
printf("%s", buffer_mot);
}
}
else
{
i=0;
memset(buffer_mot, 0, 40);
}
}while(!feof(fichier));
} |