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 :

Détecter une balise dans un fichier HTML


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Détecter une balise dans un fichier HTML
    Bonjour ;
    J'arrive à ouvrir un fichier HTML grâce à un programme C, mais je sais pas détecter une balise !
    Vos codes vont m'aider , merci !

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Il te faut lire le fichier ligne à ligne (fgets()) puis, pour chaque ligne, pour une recherche simple (exemple chercher des balises comme "<head>") tu peux utiliser strstr()) mais pour chercher des balises plus complexes (exemple "<a href=truc>") l'emploi de regex serait peut-être plus approprié.

    Toutefois, si je peux un conseil, le C n'est pas franchement le plus adéquat des langages pour faire ce travail. Il peut le faire, oui, mais ce sera à toi de tout lui détailler. Tandis que d'autres de plus haut niveau (comme python ou même un shell Unix) offrent certains outils et raccourcis syntaxiques qui facilitent le codage de ce genre de travail.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut
    Je propose d'utiliser un parser xml: libxml pourrait faire l'affaire.

    Perso si j'avais du temps et si j'étais à ta place j'aurais tout fait moi même, ça ne serait pas complet et optimal mais je me serais amuser.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 548
    Points
    10 548
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Il te faut lire le fichier ligne à ligne (fgets()) puis, pour chaque ligne, pour une recherche simple (exemple chercher des balises comme "<head>") tu peux utiliser strstr()) mais pour chercher des balises plus complexes (exemple "<a href=truc>") l'emploi de regex serait peut-être plus approprié.
    Le plus gros problème c'est que le HTML (XML) c'est hardcore à parser

    Le truc c'est que les balises peuvent être sur plusieurs lignes, elles peuvent être auto-fermantes ou pas. Même pour les balises auto-fermantes, la syntaxe n'est pas figée : " />", "/>" ou ">"
    Ensuite chaque balise a des attributs facultatifs. Le seul truc sympa c'est que tous les attributs sont des chaînes de caractères (entouré par des double quotes) - seul les booléens sont bizarres.
    Et entre les balises, tu as du texte et/ ou des autres balises. Mais tu as des contraintes (dans une balise a tu ne peux pas mettre d'autres balises).
    Le HTML5 a grandement dégraissé le mammouth directement sur la bête () : mettre du javascript dans le HTML est déprécié, tu n'as plus besoin des sections CDATA, ...


    Cela va dépendre fortement de ce que @MHIKA WOLF AK-47 veut faire parce que, en C, tu peux coder une machine à états en pur arrache total pour des trucs simples (et même si cela ne fonctionne pas dans 100% des cas)
    Mais par contre, s'il veut des informations sur l'arbre DOM par exemple , il faut passer soit par la grammaire soit par une bibliothèque externe qui parse du HTML

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Normalement, pour parser du HTML, il faut une bibliothèque de parsing SGML si c'est du HTML à l'ancienne, ou une bibliothèque de parsing XML si c'est du XHTML.
    PS: Je m'attendais à un autre lien sous le mot regex...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    PS: Je m'attendais à un autre lien sous le mot regex...
    J'ai préféré privilégier le fofo
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Ajouter une ligne dans 1000 fichiers HTML
    Par jesuismoi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/11/2010, 19h02
  2. Réponses: 5
    Dernier message: 26/08/2010, 16h47
  3. Chercher une balise dans un fichier html
    Par saramery dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2008, 02h07

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