2014-12-25 6 views
0

HTMLParser를 사용하여 기본 HTML을 구문 분석하고 있는데, 여러 가지 이유로 BeautifulSoup를 사용하고 싶지 않습니다. HTMLParser를 하위 클래스로 만들었으므로 실제 파서는 정상적으로 작동합니다. 그러나 서브 클래스의 init_ 메소드가 호출되지 않습니다. 대신, 새 하위 클래스 객체를 만들면 HTMLParser의 init 메서드가 직접 호출되고 하위 클래스 init은 전혀 호출되지 않습니다. 이것은 HTMLParser.HTMLParser 및 urllib.HTMLParser에서 상속받을 때 발생합니다. 코드는 다음과 같습니다.하위 클래스 _init_ 메소드가 무시되었습니다. - 실행이 곧바로 수퍼 클래스로 바뀝니다. _init_

class MyHtmlParser(htmllib.HTMLParser): 

    def _init_(self, formatter): 
     print("in init") 
     htmllib.HTMLParser.__init__(self, formatter)   
     self.links = [] 
     self.is_li = False 
     self.close_a = False 
     self.close_li = False 
     print "initialized" 


    def get_links(self): 
     return self.links 

    def handle_starttag(self, tag, attrs): 
     #some functionality here - this works 

    def handle_endtag(self, tag): 
     #some functionality here - this works 

myparser = MyHtmlParser(formatter.NullFormatter) 

답변

1

함수 정의에 밑줄이 두 개없는 것 같습니다. 함수는 다음과 같아야합니다.

def __init__(self, formatter): 
+0

와우. 정말 고맙습니다. 나는 두 배 밑줄임을 결코 깨닫지 못했다. – bsg