检查HTML标签是否自闭合 - HTML解析器 - Python
有没有办法用HTML解析器检查一个标签是否是自闭合标签?
我知道自闭合标签是通过内置函数 handle_startendtag()
来处理的。
不过,这个函数只会处理那些明确闭合的标签,比如 <img src="x.jpg"/>
。
而不会处理像 <img src="x.jpg">
这样的标签。
我正在做一个程序,它会读取一个HTML文件,然后输出一个Sass模板。
我想在输出文件中把那些在HTML文件里没有明确闭合的img标签加上闭合标记。
谢谢!
2 个回答
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
属性。所以,你可以通过这个属性来筛选它们。
3
这不是一个专门针对Python的解决方案,但如果你想知道哪些标签具有“自闭合特性”,可以查看官方的HTML5规范:这些标签正式被称为空元素。
area, base, br, col, embed, hr, img, input, keygen, link, menuitem,
meta, param, source, track, wbr
严格来说,空元素根本没有闭合标签,但允许在>
之前加一个额外的/
。