Maison >développement back-end >Tutoriel Python >Comment puis-je supprimer efficacement les balises HTML des chaînes en Python ?

Comment puis-je supprimer efficacement les balises HTML des chaînes en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-06 22:47:11300parcourir

How Can I Efficiently Remove HTML Tags from Strings in Python?

Supprimer les balises HTML des chaînes en Python

En Python, il existe différents scénarios dans lesquels vous devrez peut-être supprimer les balises HTML d'une chaîne pour extraire son contenu. Explorons une solution à ce problème.

Supposons que vous récupériez du contenu HTML à l'aide de la bibliothèque mechanize, comme indiqué dans l'exemple d'extrait de code. Chaque ligne du contenu contient des balises HTML et du texte. Pour extraire uniquement le texte, nous devons supprimer les balises.

Une option consiste à utiliser une fonction personnalisée pour effectuer cette tâche. La fonction strip_tags utilise la classe HTMLParser pour créer un analyseur qui traite le contenu HTML. L'analyseur extrait uniquement les données contenues dans les balises et les accumule dans un objet StringIO.

Voici l'extrait de code pour Python 3 :

from io import StringIO
from html.parser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        super().__init__()
        self.reset()
        self.strict = False
        self.convert_charrefs= True
        self.text = StringIO()
    def handle_data(self, d):
        self.text.write(d)
    def get_data(self):
        return self.text.getvalue()

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

Pour Python 2, utilisez le code suivant :

from HTMLParser import HTMLParser
from StringIO import StringIO

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.text = StringIO()
    def handle_data(self, d):
        self.text.write(d)
    def get_data(self):
        return self.text.getvalue()

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

En passant le contenu HTML à cette fonction, vous pouvez effectivement supprimer les balises et conserver uniquement le texte contenu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn