Python HTMLParser检测数据的结尾

时间:2014-05-20 09:04:19

标签: python html-parsing

我正在使用Python 2.7的HTMLParser库来处理和提取一些信息 从远程网址获取的HTML内容。我不太了解如何知道或捕获解析器实例完成解析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()

我的问题是,如何检测解析过程已完成?

感谢。

1 个答案:

答案 0 :(得分:1)

HTMLParser是同步的,也就是说,一旦从feed返回,到目前为止所有数据都已被解析并且所有回调都被调用。

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

(如果我误解了你的问题,请告诉我。)