Python HTMLParser, обнаруживающий конец данных

Я использую библиотеку HTMLParser Python 2.7 для обработки и извлечения некоторой информации из содержимого HTML, которое было получено с удаленного URL-адреса. Я не совсем понял, как узнать или поймать точный момент, когда экземпляр парсера заканчивает разбор HTML-данных.

Базовая реализация моего класса парсера выглядит так:

class MyParser(HTMLParser.HTMLParser):
    def __init__(self, url):
        self.url = url
        self.users = set()

    def start(self):
        self.reset()
        response = urllib3.PoolManager().request('GET', self.url)
        if not str(response.status).startswith('2'):
            raise urllib3.HTTPError('HTTP error here..')
        self.feed(response.data.decode('utf-8'))

    def handle_starttag(self, tag, attrs):
        if tag == 'div':
            attrs = dict(attrs)
            if attrs.get('class') == 'js_userPictureOuterOnRide':
                user = attrs.get("data-name")
                if user:
                    self.users.add(user)

    def reset(self):
        HTMLParser.HTMLParser.reset(self)
        self.users.clear()

Мой вопрос: как я могу определить, что процесс синтаксического анализа завершен?

Спасибо.


person ozgur    schedule 20.05.2014    source источник


Ответы (1)


HTMLParser является синхронным, то есть после возврата из feed все данные на данный момент проанализированы и вызваны все обратные вызовы.

    self.feed(response.data.decode('utf-8'))
    print 'ready!'

(если я неправильно понял ваш вопрос, пожалуйста, дайте мне знать).

person georg    schedule 20.05.2014