2014-07-15 359 views
0

有没有方法检查标签是否为HTMLparser的自闭标签?检查html标签是否自闭合 - HTMLparser - Python

我知道自闭的标签,并内置函数来处理:handle_startendtag()

但是,它只能处理他们,如果他们都明确地closed..eg <img src="x.jpg"/>

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

我正在制作一个程序,需要一个html文件并吐出一个sass模板。

我想在输出文件中关闭这些img标签,这些标签没有在html文件中显式关闭。

干杯

回答

2

不完全是一个Python特定的解决方案,但如果你想知道标签有这样的“自封闭性”,你可以看看官方的HTML5规范:这些是正式名称为void elements

area, base, br, col, embed, hr, img, input, keygen, link, menuitem, 
meta, param, source, track, wbr 

严格地说,无效元素没有结束标记所有,但permit an extra / immediately before the >

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