检查html标签是否自动关闭 - HTMLparser - Python

时间:2014-07-15 02:44:56

标签: python html parsing tags

有没有办法检查标签是否是HTMLparser的自动关闭标签?

我知道自闭标签由内置函数处理:handle_startendtag()

但是,如果明确关闭它们,它只处理它们.eg <img src="x.jpg"/>

而不是:<img src="x.jpg">

我正在创建一个带有html文件并吐出sass模板的程序。

我想关闭输出文件中未在html文件中显式关闭的这些img标记。

干杯

2 个答案:

答案 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属性。所以,你可以过滤掉它们。