我正在使用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()
我的问题是,如何检测解析过程已完成?
感谢。
答案 0 :(得分:1)
HTMLParser
是同步的,也就是说,一旦从feed
返回,到目前为止所有数据都已被解析并且所有回调都被调用。
self.feed(response.data.decode('utf-8'))
print 'ready!'
(如果我误解了你的问题,请告诉我。)