2013-05-02 38 views
0

我有以下解析器:通過實體在Python 3.3 html.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標準庫)

回答

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可能更容易使用這種情況。