python如何添加html_如何使用python向现有html添加一致的空白?

我选择j.f.sebastian的答案是因为我认为它是最简单的,因此也是最好的,但是我正在为那些不想安装漂亮汤的人添加另一个解决方案。(而且,漂亮的汤树建造者

deprecated in html5lib 1.0

)这个解决方案多亏了Amarghosh的提示;我只是稍微充实了一下。看着html5lib,我意识到它将以本机方式输出一个minidom对象,这意味着我可以使用他的建议

toprettyxml()

. 我想到的是:

from html5lib import HTMLParser, treebuilders

from cStringIO import StringIO

def tidy_html(text):

"""Returns a well-formatted version of input HTML."""

p = HTMLParser(tree=treebuilders.getTreeBuilder("dom"))

dom_tree = p.parseFragment(text)

# using cStringIO for fast string concatenation

pretty_HTML = StringIO()

node = dom_tree.firstChild

while node:

node_contents = node.toprettyxml(indent=' ')

pretty_HTML.write(node_contents)

node = node.nextSibling

output = pretty_HTML.getvalue()

pretty_HTML.close()

return output

还有一个例子:

>>> text = """bold, italic

a div
"""

>>> tidy_html(text)

bold, italic

a div

为什么我要在树的子节点上迭代,而不是仅仅调用

toprettyxml()

dom_tree

直接?我处理的一些HTML实际上是HTML片段,所以它缺少

标签。为了处理这个我用了

parseFragment()

方法,这意味着我得到一个documentfragment作为回报(而不是一个文档)。不幸的是,它没有

writexml()

方法(其中

toprettyxml()

调用),所以我迭代子节点,这些子节点确实有这个方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值