单步执行Python 3.3 html.parser中的实体

时间:2013-05-02 02:40:55

标签: python html-parsing python-3.3

我有以下Parser:

class Parser(HTMLParser):

  def __init__(self):
    HTMLParser.__init__(self)
    self.tableCount = 0

  def handle_starttag(self, tag, attrs):
     if tag == "table":
       for attr in attrs:
         if attr[0] == "class" and attr[1] == "space":
           ## need to do some processing here

取代评论,我需要做的是在此之后逐步执行所有HTML实体,直到table标记结束(此代码仅在tag == table时运行,如上所示。

我该怎么做?我看不到任何方法来逐步浏览此标记下的所有标记。请注意我不能使用任何外部库,如BeautifulSoup(只是Python标准库)。

1 个答案:

答案 0 :(得分:0)

class Parser(HTMLParser):

    def __init__(self):
        HTMLParser.__init__(self)
        self.inTable = False

    def handle_starttag(self, tag, attrs):
        if tag == "table" and ('class','space') in attrs:
            self.inTable = True
        if self.inTable:
            doSomething()

    def handle_endtag(self, tag):
        if tag == "table":
            self.inTable = False

我猜xml.etree.ElementTree在这种情况下可能更容易使用。