有没有办法检查标签是否是HTMLparser的自动关闭标签?
我知道自闭标签由内置函数处理:handle_startendtag()
但是,如果明确关闭它们,它只处理它们.eg <img src="x.jpg"/>
而不是:<img src="x.jpg">
我正在创建一个带有html文件并吐出sass模板的程序。
我想关闭输出文件中未在html文件中显式关闭的这些img标记。
干杯
答案 0 :(得分:2)
不完全是特定于Python的解决方案,但如果您想知道哪些标签具有此“自动关闭属性”,您可以查看官方HTML5规范:这些正式名称为< EM> void elements
area, base, br, col, embed, hr, img, input, keygen, link, menuitem,
meta, param, source, track, wbr
严格地说,void元素根本没有结束标记,只有permit an extra /
immediately before the >
。
答案 1 :(得分:0)
简单的解决方案是使用BeautifulSoup。
In [76]: from bs4 import BeautifulSoup
In [77]: BeautifulSoup('<img src="x.jpg">')
Out[77]: <img src="x.jpg"/>
您还可以检查标签是否自动关闭。
from bs4 import BeautifulSoup
from bs4.element import Tag
soup = BeautifulSoup(html)
tags = [tag for tag in soup if isinstacne(tag, Tag)
self_closing = [tag for tag in tags if tag.isSelfClosing]
每个Tag
元素都有isSelfClosing
属性。所以,你可以过滤掉它们。