【问题标题】:Check if html tag is self-closing - HTMLparser - Python检查 html 标记是否自动关闭 - HTMLparser - Python
【发布时间】:2014-07-15 02:44:55
【问题描述】:

有没有办法用 HTMLparser 检查标签是否是自闭合标签?

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

但是,只有当它们被明确关闭时,它才会处理它们..例如<img src="x.jpg"/>

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

我正在制作一个程序,它接受一个 html 文件并输出一个 sass 模板。

我想关闭输出文件中未在 html 文件中明确关闭的这些 img 标签。

干杯

【问题讨论】:

    标签: python html parsing tags


    【解决方案1】:

    不完全是特定于 Python 的解决方案,但如果您想知道 哪些 标签具有这种“自闭合属性”,您可以查看官方 HTML5 规范:这些正式称为 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 >

    【讨论】:

      【解决方案2】:

      简单的解决方案是使用 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 属性。因此,您可以将它们过滤掉。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-15
        • 1970-01-01
        • 2013-07-28
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多