модулей и выбрал HTMLParser. Скажу сраз до меня не сразу доперло, что надо сделать класс, унаследовав его от HTMLParser сделать что-то типа этого
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print "Encountered the beginning of a %s tag" % tag
def handle_endtag(self, tag):
print "Encountered the end of a %s tag" % tag
А потом запустить его
p=MyHTMLParser()
p.feed('some text here')
Все хорошо, написал я свой класс, запустил, и получил что-то типа этого
HTMLParser instance has no attribute '[тут какой-то его внутренний атрибут]'
Гугл ответа не дал , а потом до меня дошло. Вообщем не надо переопределять конструктор класса, то есть если вы напишите примерно следующееfrom HTMLParser import HTMLParser
Вы начнете получать ту белеберду, думаю вы уже догадались в чем проблема - все дело в методе __init__ , который, как я понял , переопределяет базовый со всеми его атрибутами. Потому там надо добавить вызов super().
class MyHTMLParser(HTMLParser):
def __init__(self,d,f)
self.d='ss'
self.f='dd'
def handle_starttag(self, tag, attrs):
print "Encountered the beginning of a %s tag" % tag
def handle_endtag(self, tag):
print "Encountered the end of a %s tag" % tag
Комментариев нет:
Отправить комментарий