Python HtmlPasser-extract";“空的”;两个标记之间的数据 类MyHTMLParser(HTMLParser): b1=错误 def句柄\u开始标记(自身、标记、属性): 如果标签==“ul”: self.b1=真 def句柄_数据(自身、数据): 如果self.b1: 打印(数据) self.b1=False parser=MyHTMLParser() feed(“
Gros cacaZuul”) 我想提取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
和
之间的空数据。但是,即使我标记了
标记,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)