我使用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)
答案 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.
根据说明,原始的空格会丢失到内部表示中。