You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BeautifulSoup将soup对象转回HTML并保留原格式?

解决BeautifulSoup转回HTML时保留原始格式的问题
  • 别用prettify(),直接转成字符串
    如果你不需要自动格式化的HTML,直接把soup对象转成字符串就行,这样输出的内容会最大程度贴近原始HTML的格式,不会凭空加换行和空格:

    html_output = str(soup)
    # 需处理编码的话用这个
    html_output = soup.encode("utf-8").decode("utf-8")
    
  • 解析时给解析器加参数控制空格
    不同解析器有参数可以控制空格保留,比如用lxml的时候,指定哪些标签要保留原始空格:

    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(your_html_content, 'lxml', preserve_whitespace_tags=['pre', 'code'])
    

    这样像<pre>、<code>这类对空格敏感的标签,里面的格式会被完整保留。

  • 自定义格式化器(如果非要用prettify)
    要是你需要用prettify()但不想它乱加格式,可以自己写个极简格式化器,覆盖默认的缩进逻辑:

    from bs4 import BeautifulSoup
    from bs4.formatter import HTMLFormatter
    
    class MinimalFormatter(HTMLFormatter):
        def indent(self, elem, level=0):
            # 取消自动缩进,不添加多余换行
            return ""
    
    soup = BeautifulSoup(your_html_content, 'html.parser')
    # 编辑soup的操作...
    html_output = soup.prettify(formatter=MinimalFormatter())
    

内容的提问来源于stack exchange,提问作者Javi DR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:21:30