使用BeautifulSoup修改后保留html文件结构

时间:2012-02-03 18:06:09

标签: python beautifulsoup

我使用python和BeautifullSoup来查找和替换html页面上的一些文本,我的问题是我需要保持文件结构(缩进,空格,新行等)不变并仅更改所需的元素。我怎样才能做到这一点? str(soup)soup.prettify()都以多种方式改变源文件。

P.S。示例代码:

    soup = BeautifulSoup(text)
        for element in soup.findAll(text=True):
            if not element.parent.name in ['style', 'script', 'head', 'title','pre']:
                element.replaceWith(process(element))
    result = str(soup)

1 个答案:

答案 0 :(得分:2)

我会说没有简单的方法(或根本没有办法)。来自BeautifulStoneSoup的doc:

__str__(self, encoding='utf-8', prettyPrint=False, indentLevel=0)
    Returns a string or Unicode representation of this tag and
    its contents. To get Unicode, pass None for encoding.

    NOTE: since Python's HTML parser consumes whitespace, this
    method is not certain to reproduce the whitespace present in
    the original string.

根据说明,原始的空格会丢失到内部表示中。