Использование HTMLParser в Python 3.2

Я использовал 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, как написано выше.

Моя первая ошибка указывает на строку:

s.feed(html)

... и ошибка говорит...

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

Итак, после небольшого исследования, я добавляю "strict=True" в верхнюю строку, что и делает. ..

class MLStripper(HTMLParser, strict=True)

Тем не менее, я получаю новую ошибку:

TypeError: type() takes 1 or 3 arguments

Чтобы посмотреть, что произойдет, я удалил аргумент «я» и оставил в «strict=True»... что дало ошибку:

NameError: global name 'self' is not defined

... и у меня возникло ощущение "Я угадываю догадки".

Я понятия не имею, каким будет третий аргумент в строке class MLStripper(HTMLParser)после selfи strict=True; исследования не подбросили никакого просветления.

14
задан Community 23 May 2017 в 12:18
поделиться