IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Enlever balises html


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut Enlever balises html
    Bonjour,
    j'aimerais enlever les balises html d'une page et récupérer du texte simple. Est ce que quelqu'un connaît une bibliothèque toute faite ou comment il faut faire???
    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Salut,

    Je ne sais pas vraiment si une bibliotheque existe, mais ça ne parait pas bien compliqué à réaliser...
    Il suffit de lire un fichier html (comme un fichier texte) et recopier dans un second fichier (texte) seulement les caractères qui sont hors des balises.

    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Pour tout caractère c 
         si c = '<' alors recherché le prochain caractere '>' 
           (sans copier les caractères intermèdiaire dans le second fichier)
         sinon copier c dans le second fichier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut
    Merci pour ta réponse. J'y avais pensé aussi mais mon problème c'est que si la page html contient un < ou un > sans que ca soit une balise (pck tout le monde ne sait pas qu'il faut remplacer ce genre de chose par un code), je suis mal pour appliquer cette technique.

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Nan l'HTML ne definit pas ce qu'il faut faire si un < ou un > n'introduit pas l'ouverture/fermeture d'une balise, c'est juste que les navigateurs le gerent par laxisme ou histoire de se dire "moi au moins je sais lire le code html le plus crade du monde"

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    @anihat :

    pas forcément..

    Primo tu regardes si effectivement il y a un > suivant un <.
    Ensuite, 2 possibilités :

    • si il n'y en a pas, c'est un vrai caractère <.
    • si il y en a : il n'y a que peu de possibilités de mots-clés, puisque c'est pour ça que HTML a été créé, c'est d'avoir peu de mots. Donc tu peux regarder d'abord si il y a un signe "=" entre les 2, ou si le caractère suivant est un "/", et enfin passer à travers les mots-clés : LIST, BODY, FONT, IMG, etc..

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut Relance du problème
    Merci pour vos réponses mais pour l'instant le problème n'est pas résolu. L'algorithme n'est pas du tout optimisé car une boucle pour chercher le prochain < ou > prend 99% du temps CPU donc je ne peux plus rien faire à côté. Et je tiens à signaler que je ne compte pas enlever les balises sur une dixaine de pages mais sur des milliers, voire des millions de pages.
    Si quelqu'un a une idée sur la librairie à utiliser ce serait sympa.
    Merci d'avance

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Par défaut
    Pourquoi ne pas utiliser des expressions régulières. Tu cherches tout ce qui correspond à <quelquechose> et tu le vire. Je ne suis pas expert en C mais en java ça revient à virer les trucs de la forme <.*?>. Tu a un cours par la. Et c'est bien plus rapide qu'une analyse char par char faite à la cochon.

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par anihat
    L'algorithme n'est pas du tout optimisé car une boucle pour chercher le prochain < ou > prend 99% du temps CPU donc je ne peux plus rien faire à côté. Et je tiens à signaler que je ne compte pas enlever les balises sur une dixaine de pages mais sur des milliers, voire des millions de pages.
    Si quelqu'un a une idée sur la librairie à utiliser ce serait sympa.
    Si tu veux rendre du CPU, tu mets un

    WIN32 : Sleep(1);
    UNX : usleep(1);

    de temps en temps (par exemple, tous les 1000, 10000, 100000 caractères, à optimiser...) dans la boucle et c'est tout... C'est pas un problème de bibliothèque (qui risque de ne pas faire ça et de bloquer le CPU tout autant...)

    Mais si tu traites des fichiers, tu n'as pas besoin de ça, car pendant les I/O, le processus est suspendu...

    Tu peux montrer le code et les conditions d'exécution ?

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par anihat
    Merci pour vos réponses mais pour l'instant le problème n'est pas résolu. L'algorithme n'est pas du tout optimisé car une boucle pour chercher le prochain < ou > prend 99% du temps CPU donc je ne peux plus rien faire à côté. Et je tiens à signaler que je ne compte pas enlever les balises sur une dixaine de pages mais sur des milliers, voire des millions de pages.
    Si quelqu'un a une idée sur la librairie à utiliser ce serait sympa.
    Merci d'avance

    je te signale quand même qu'il ya des fonctions standard qui cherchent...

    strchr

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par anihat
    Merci pour ta réponse. J'y avais pensé aussi mais mon problème c'est que si la page html contient un < ou un > sans que ca soit une balise (pck tout le monde ne sait pas qu'il faut remplacer ce genre de chose par un code), je suis mal pour appliquer cette technique.
    C'est un vrai problème, mais il n'y a pas d'autre solution. Tu n'es pas responsable du mauvais codage de la page html.

    Tu peux cependant la passer au vérificateur avant :

    http://validator.w3.org/

    et la corriger à la main, mais c'est du boulot...

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par anihat
    j'aimerais enlever les balises html d'une page et récupérer du texte simple. Est ce que quelqu'un connaît une bibliothèque toute faite ou comment il faut faire???
    Ca existe peut être.

    Si tu veux le faire à la main, l'algorithme pour retirer les balises html est simple, sachant qu'elle commence par < et se termine par >. Mais ca ne veut pas dire que le texte sera lisible...

    Il risque notamment d'y avoir des lignes très longues qui représentent chacune un paragraphe (et encore, c'est même pas sûr, tout pourait exister sur une seule ligne...)...

    Dans un traitement de texte, c'est supportable, mais dans un éditeur, ça va être horrible à moins d'activer "l'auto wrap"...

    Il y a donc peut être un traitement un peu plus subtil à faire pour extraire des données textes lisibles d'un fichier html...

    Je dis ça, je dis rien...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. enlever balise html chaine de caractères
    Par silent_murder dans le forum Langage
    Réponses: 0
    Dernier message: 28/05/2010, 14h33
  2. enlever les balises html dans le résultat
    Par kaayna dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/02/2010, 14h01
  3. treplace regex pour enlever les balises html
    Par briceg dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 23/10/2009, 10h47
  4. [RegEx] Enlever toutes les balise html
    Par cerede2000 dans le forum Langage
    Réponses: 1
    Dernier message: 26/05/2007, 10h20
  5. Script pour enlever les balises html
    Par Scratch48 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/11/2005, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo