我尝试将HTML页面转换为树结构。我已经得到的这个类(我删除了我实际上做与每个标签,因为它是不相关):如何处理没有结尾斜杠的空HTML元素?
class PageParser(html.parser.HTMLParser):
def handle_starttag(self, tag, attrs):
print("start "+tag)
def handle_endtag(self, tag):
print("end "+tag)
def handle_startendtag(self, tag, attrs):
print("startend "+tag)
我预计空元素触发handle_startendtag
方法。问题是,遇到像<meta>
这样的空元素时,只会调用handle_starttag
方法。标签是永远不会从我的类封闭的观点:
parser = PageParser()
parser.feed('<div> <meta charset="utf-8"> </div>')
打印:
start div
start meta
end div
我需要知道什么时候每个元素已经被关闭,以正确地创建树。我如何知道标签是否为空元素?
从文档: _“此解析器不检查结束标签是否匹配开始标签或调用通过关闭外部元素隐式关闭的元素的结束标记处理程序。“_ https://docs.python.org/3/library/html.parser.html – Hamish
您应该输入严格的XML,其中' '标签不再有效,您必须将其写为''或跟踪可能以空标签形式出现的标签列表,如'
'或''标签。 –
http://stackoverflow.com/questions/3115448/best-way-to-convert-the-this-html-file-into-an-xml-file-using-python –