À l'aide de HTMLParser en Python 3.2

J'ai été en utilisant l'Analyseur HTML pour la démolition de données à partir de sites web et de les dépouiller de codage html, tout en le faisant. Je suis conscient des différents modules tels que les Belles de la Soupe, mais a décidé de descendre dans le chemin de la pas en fonction de "l'extérieur" des modules. Il y a un code code fourni par Eloff: Bande de HTML à partir de chaînes de caractères en Python

from HTMLParser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)

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

Il fonctionne en Python 3.1. Cependant, j'ai récemment mis à niveau vers Python 3.2.x et ont découvert que j'avais des messages d'erreurs concernant l'Analyseur HTML code comme écrit ci-dessus.

Ma première erreur, points à la ligne:

s.feed(html)

... et le message d'erreur indique ...

AttributeError: 'MLStripper' object has no attribute 'strict'

Donc, après un peu de recherche, j'ai ajouter "strict=True" à la ligne du haut, faisant d'elle...

class MLStripper(HTMLParser, strict=True)

Cependant, j'ai un nouveau message d'erreur:

TypeError: type() takes 1 or 3 arguments

Pour voir ce qui allait arriver, j'ai enlevé le "soi" de l'argument et de la gauche dans la "stricte=True"... ce qui a donné l'erreur:

NameError: global name 'self' is not defined

... et j'ai eu le "je devine que sur des suppositions" sentiment.

Je n'ai aucune idée de ce que le troisième argument dans le class MLStripper(HTMLParser) ligne serait, après self et strict=True; la recherche ne les jetez pas tout de l'illumination.

OriginalL'auteur MilesNielsen | 2012-06-16