Я использовал 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
; исследования не подбросили никакого просветления.