Python HtmlPasser-extract";“空的”;两个标记之间的数据 类MyHTMLParser(HTMLParser): b1=错误 def句柄\u开始标记(自身、标记、属性): 如果标签==“ul”: self.b1=真 def句柄_数据(自身、数据): 如果self.b1: 打印(数据) self.b1=False parser=MyHTMLParser() feed(“

Python HtmlPasser-extract";“空的”;两个标记之间的数据 类MyHTMLParser(HTMLParser): b1=错误 def句柄\u开始标记(自身、标记、属性): 如果标签==“ul”: self.b1=真 def句柄_数据(自身、数据): 如果self.b1: 打印(数据) self.b1=False parser=MyHTMLParser() feed(“,python,html,Python,Html,Gros cacaZuul”) 我想提取和之间的空数据。但是,即使我标记了标记,handle\u data函数也会打印之后找到的第一个数据: “格罗斯卡卡” 我想打印“nothing”,并且len(data)返回0 你能帮帮我吗?我也不允许使用BeautifulSoup。这几乎是一个复制品 其思想是在处理标记时保留开始标记和包含的数据,然后在解析器处理结束标记时使用它们来执行操作,如下所示: class MyHTMLParser(HTMLParser): b1 = False

Gros caca

Zuul

”) 我想提取
之间的空数据。但是,即使我标记了
标记,
handle\u data
函数也会打印
    之后找到的第一个数据:

    “格罗斯卡卡”

    我想打印“nothing”,并且
    len(data)
    返回
    0


    你能帮帮我吗?我也不允许使用BeautifulSoup。

    这几乎是一个复制品

    其思想是在处理标记时保留开始标记和包含的数据,然后在解析器处理结束标记时使用它们来执行操作,如下所示:

    class MyHTMLParser(HTMLParser):
    
        b1 = False
    
        def handle_starttag(self, tag, attrs):
            if tag =="ul":
                self.b1 = True
    
        def handle_data(self, data):
            if self.b1:
                print(data)
                self.b1 = False
    
    parser = MyHTMLParser()
    
    parser.feed('<ul class="player-metadata floatleft"></ul><p>Gros caca</p><p>Zuul</p>')
    

    这将处理空字符串并为
    len(self.\u data)
    返回
    0
    ,非常感谢。我希望我能投票支持你的答案!另外,我相信你的意思是最后一行打印(自我数据)。是的,但你知道要点很高兴我能帮上忙。我相信即使分数很低,你也能接受答案,这会去掉问题的标签。
    class MyHTMLParser(HTMLParser):
        _data = ''
        _starttag = ''
    
        def handle_starttag(self, tag, attrs):
            self._starttag = tag
    
        def handle_data(self, data):
            self._data = data
    
        def handle_endtag(self, tag):
            if self._starttag == 'ul' and self._data == '':
                print('nothing')
            elif (...):
                (...)
            else:
                print(self._data)