如何修复错误嵌套/未闭合的 HTML 标签?

2024-05-04

我需要通过使用正确的嵌套顺序关闭任何打开的标签来清理用户提交的 HTML。我一直在寻找一种算法或Python代码来做到这一点,但除了PHP等中的一些半生不熟的实现之外,还没有找到任何东西。

例如,类似的东西

<p>
  <ul>
    <li>Foo

becomes

<p>
  <ul>
    <li>Foo</li>
  </ul>
</p>

任何帮助,将不胜感激 :)


使用美丽汤:

from BeautifulSoup import BeautifulSoup
html = "<p><ul><li>Foo"
soup = BeautifulSoup(html)
print soup.prettify()

gets you

<p>
 <ul>
  <li>
   Foo
  </li>
 </ul>
</p>

据我所知,您无法控制将

  • 标记放在与 Foo 不同的行上。

    使用整洁:

    import tidy
    html = "<p><ul><li>Foo"
    print tidy.parseString(html, show_body_only=True)
    

    gets you

    <ul>
    <li>Foo</li>
    </ul>
    

    不幸的是,我不知道如何在示例中保留

    标记。 Tidy 将其解释为一个空段落而不是一个未关闭的段落,因此这样做

    print tidy.parseString(html, show_body_only=True, drop_empty_paras=False)
    

    出来为

    <p></p>
    <ul>
    <li>Foo</li>
    </ul>
    

    当然,最终,您的示例中的

    标记是多余的,因此您可能会丢失它。

    最后,Tidy 还可以进行缩进:

    print tidy.parseString(html, show_body_only=True, indent=True)
    

    becomes

    <ul>
      <li>Foo
      </li>
    </ul>
    

    所有这些都有其优点和缺点,但希望其中之一足够接近。

  • 本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    如何修复错误嵌套/未闭合的 HTML 标签? 的相关文章

    • 需要在python中找到print或printf的源代码[关闭]

      很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
    • 跟踪 pypi 依赖项 - 谁在使用我的包

      无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
    • 删除flask中的一对一关系

      我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
    • 更改API数据输出的布局

      我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
    • 使用 kivy textinput 的 'input_type' 属性的问题

      您好 我在使用 kivy 的文本输入小部件的 input type 属性时遇到问题 问题是我制作了两个自定义文本输入 其中一个称为 StrText 其中设置了 input type text 然后是第二个文本输入 名为 NumText 其
    • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

      Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
    • 如何通过 TLS 1.2 运行 django runserver

      我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
    • pyspark 将 twitter json 流式传输到 DF

      我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
    • 如何删除标题中的粗体?

      我有一个标题 h1 THIS IS A HEADLINE h1 如何使短语 THIS IS 不加粗 其余部分不做任何更改 我在文本装饰中找不到任何相关标签 标题看起来很粗体 因为它大尺寸 如果您已应用粗体或想要更改行为 您可以执行以下操作
    • 从 NumPy ndarray 中选择行

      我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
    • 仅第一个加载的 Django 站点有效

      我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
    • Pandas 将多行列数据帧转换为单行多列数据帧

      我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
    • Python:XML 内所有标签名称中的字符串替换(将连字符替换为下划线)

      我有一个格式不太好的 XML 标签名称内有连字符 我想用下划线替换它 以便能够与 lxml objectify 一起使用 我想替换所有标签名称 包括嵌套的子标签 示例 XML
    • 如何解决 PDFBox 没有 unicode 映射错误?

      我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
    • Service Worker 与 Shared Worker

      Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
    • 实现 XGboost 自定义目标函数

      我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
    • Django-tables2 列总计

      我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
    • Pandas 每周计算重复值

      我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重
    • ng-include 和 ng-view 不同时加载

      下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒
    • 使用随机放置的 NaN 创建示例 numpy 数组

      出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

    随机推荐