2014-07-15 362 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屬性。所以,你可以過濾掉它們。