Я использую HTML Parser для удаления данных с веб-сайтов и удаления html-кода при этом. Я знаю различные модули, такие как Beautiful Soup, но решил пойти по пути не в зависимости от "внешних" модулей. Существует код, предоставленный Eloff: Стриптиз HTML из строк в 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()
Он работает в Python 3.1. Тем не менее, я недавно обновился до Python 3.2.x и обнаружил, что получаю ошибки в отношении кода HTML Parser, как указано выше.
Моя первая ошибка указывает на строку:
s.feed(html)
... и ошибка говорит...
AttributeError: 'MLStripper' object has no attribute 'strict'
Итак, после небольшого исследования я добавлю "strict = True" в верхнюю строку, сделав его...
class MLStripper(HTMLParser, strict=True)
Однако я получаю новую ошибку:
TypeError: type() takes 1 or 3 arguments
Чтобы узнать, что произойдет, я удалил аргумент "self" и оставил в "strict = True"..., который отказался от ошибки:
NameError: global name 'self' is not defined
... и я получил ощущение "Я предполагаю, что угадывает".
Я не знаю, каким будет третий аргумент в строке class MLStripper(HTMLParser)
, после self
и strict=True
; исследование не пролило никакого просветления.