Class HtmlPasser不解析整个输入
我用python编写了一些脚本,但从未真正接触过类。现在我需要一个,因为我需要设置一个html解析器(来自web中的sniplets)。它工作正常,但缺少最后一个数据字符串。上次似乎没有运行该函数 我的代码如下:Class HtmlPasser不解析整个输入,class,python-3.x,html-parsing,Class,Python 3.x,Html Parsing,我用python编写了一些脚本,但从未真正接触过类。现在我需要一个,因为我需要设置一个html解析器(来自web中的sniplets)。它工作正常,但缺少最后一个数据字符串。上次似乎没有运行该函数 我的代码如下: class MyHTMLParser(HTMLParser): def __init__(self): #reset self.reset() #options self.strict = Fals
class MyHTMLParser(HTMLParser):
def __init__(self):
#reset
self.reset()
#options
self.strict = False
self.convert_charrefs= True
#create empty list for all my stored data
self.fed = []
def handle_data(self, data):
print ('D:', data) #as you might see in output of a run, string after last tag is not added, because function did obviously not run
self.fed.append('-'+data)
def get_data(self):
return ''.join(self.fed)
def process_description(desc):
s = MyHTMLParser()
s.feed(desc)
return s.get_data()
text_html='first <br />second<br />third'
text=process_description(text_html)
print (text)
函数process\u description()不会完全处理文本\u html字符串。从输出中可以看出,handle_data()函数没有处理最后一个html标记后的子字符串(“第三个”)。一定有什么语法错误。有什么问题吗?子类
\uuuu init\uuuu
应该只调用基类\uuuuuu init\uuuuu
,而不是复制您认为它做的事情,只做额外的真正特定于子类的事情
def __init__(self):
super().__init__(strict = False, convert_charrefs= True)
#create empty list for all my stored data
self.fed = []
实际的错误是,您在完成馈送后忘记调用.close()。来自文档:“强制处理所有缓冲数据,就像它后面有一个文件结束标记一样。”
(空格在输入中。)请澄清您的问题-问题到底是什么?请参阅编辑的问题,感谢您的建议。感谢您解释我从web复制粘贴的这一基本错误。我之前只是想知道,因为我认为,有一些关键字像构造函数和析构函数。这是终点站还是我又错了?请你推荐这个问题的另一个标题,以便它对其他人有用和可查找?(例如,已解决:HTMLPasser,解析未完全完成。或“已解决:HTMLPasser未解析整个输入”。(另外,将答案标记为已接受;-)(我不理解“关键字…终端”中的问题。)
def __init__(self):
super().__init__(strict = False, convert_charrefs= True)
#create empty list for all my stored data
self.fed = []
def process_description(desc):
s = MyHTMLParser()
s.feed(desc)
s.close() # <-- added #
return s.get_data()
D: first
D: second
D: third
-first -second-third