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

Python Discussion :

Supprimer les balises


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Par défaut Supprimer les balises
    Bonjour

    Je doit faire un programme qui va chercher le contenu d'une balise HTML.
    J'utilise donc BeautifulSoup or quand je fait:
    print soupe.html.body.div("table")[1].tr("td")[3]("span")[1]
    Il m'affiche les balises <span></span> avec leurs attributs ..
    Comment faire pour les enlever?
    J'ai deja essayer de mettre .string mais ca ne marche pas ...
    J'ai donc essayer avec les expressions regulières mais je sais pas trop m'en servir .
    Alors:
    Y a t'il une methode ou autre chose de BeautifulSoup qui me permette de supprimer les balises?
    Sinon qu'est ce que ca donne avec des regex?
    Merci d'avance

  2. #2
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Tu peux nous mettre l'ouput de ton print ?

    En attendant pour les regex, c'est trés simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import re
     
    content = re.match("<span>(.*)</span>").groups(1)
    Le "." veux dire n'importe quel caractère, le "*" veut dire répéter le caractère précédent. Le fait de mettre des parenthèses "()" veut dire sauver le contenu dans le registre 1 (s'il y avait d'autres parenthèse le contenu serait sauvé dans le registre 2, 3, ...).

    Enfin ".group(1)" veux dire donne moi le résultat du registre 1.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Je modifierais simplement quelque peu le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import re
     
    content = re.search("<span[^>]*>(.*?)</span>", re.DOTALL | re.IGNORECASE).group(1)
    Pour que le ".*" prenne aussi les retours à la ligne, en HTML je dirais que ce n'est pas ce qui manque généralement, et pour que "<SPAN>" passe aussi.
    Le "[^>]*" correspond à "Tout jusqu'au prochain '>'" et le "?" derrière ".*" correspond à "le moins possible"
    De plus, il faut utiliser re.search de préférence, puisque match se limite au début de la chaîne.

Discussions similaires

  1. [RegEx] Supprimer les balises HTML
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2008, 16h51
  2. [RegEx] Supprimer les balises <DIV *>
    Par deloo dans le forum Langage
    Réponses: 6
    Dernier message: 24/02/2008, 14h11
  3. [Système] Supprimer les balises php d'un texte
    Par madcorp dans le forum Langage
    Réponses: 6
    Dernier message: 04/03/2007, 16h48
  4. [XML] Supprimer les balises vides
    Par junior6 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/09/2006, 09h34
  5. [RegEx] Supprimer les balises HTML
    Par hisy dans le forum Langage
    Réponses: 4
    Dernier message: 19/03/2006, 17h10

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