跳转到主要内容

简单的HTML清理工具

项目描述

介绍

本包包含了一些实用的Python方法,用于清理HTML标记或执行其他常见更改。清理足够严格,可以清理从MS Word或Apple Pages粘贴的HTML。本包还包含用于z3c.form的集成代码,以提供在保存时自动清理HTML的字段。

实现基于lxml中的Cleaner类。

清理例程

所有清理例程都可以通过单个sanitize函数调用。此函数接受一个输入字符串作为输入,并返回该字符串的清理版本。以下是一个简单的示例

>>> from htmllaundry import sanitize
>>> sanitize('Hello, <em>world</em>')
'<p>Hello, <em>world</em></p>'

sanitize方法接受一个可选的额外参数,它是一个lxml Cleaner实例,可以用来使用不同的过滤规则。htmllaundry包括三个清理器

  • htmllaundry.cleaners.DocumentCleaner,这是默认清理器。此清理器将允许大多数安全的标签,同时去除内联样式和不安全的标记。

  • htmllaundry.cleaners.LineCleaner是一个更严格的清理器,仅允许几个内联元素。这在您只希望接受单行输入的地方很有用,例如在文档标题中。

  • htmllaundry.cleaners.CommentCleaner只允许非常有限的HTML元素集,旨在对用户提供的评论很有用。它还将所有外部链接强制在新浏览器窗口中打开。

如果您想走得更远,您还可以使用strip_markup来从输入中去除所有标记

>>> from htmllaundry import strip_markup
>>> strip_markup('Hello, <em>world</em>')
'Hello, world'

z3c.form集成

如果您想使用z3c.form集成,您应该使用此包的z3cform附加组件

install_requires=[
     ....
     htmllaundry [z3cform]
     ...
     ],

此外,您还需要加载ZCML。在您的configure.zcml中添加类似以下行

<include package="htmllaundry" />

然后您可以在您的模式中使用HtmlText字段类型。例如

from zope.interface import Interface
from zope import schema
from htmllaundry.z3cform import HtmlText

class IDocument(Interface):
    title = schema.TextLine(
            title = _(u"Title"),
            required = True)

    description = HtmlText(
            title = _(u"Description"),
          required = True)

请注意,使用HtmlText不会自动为您提供WYSIWYG小部件。

变更日志

2.2 (2020-01-28)

  • 使用@implementer和@adapter类装饰器以实现Python3兼容性[ale-rt]

2.1 - 2016年5月10日

  • 不要删除可能用作锚点的空<a>标签。

  • 在删除空标签时,允许定义额外的标签,这些标签被认为是空的。

2.0 - 2012年12月7日

  • 在包装未包装的文本时,不要为内联元素创建单独的包装器。

  • 对所有函数使用PEP8命名。旧公共方法的名称将继续用于向后兼容。

  • 添加Python 3支持。

1.10 - 2011年5月17日

  • sanitize添加选项以指定不同的包装元素或完全跳过包装。

1.9 - 2011年4月27日

  • 添加MANIFEST.in以方便不是从subversion发布的版本。

  • 修复所有清理器以去除JavaScript。这解决了问题1

1.8 - 2010年11月30日

  • 从 sanitize 中的硬编码代码路径中删除链接目标的强制执行。这使得可以使用新的 link_target 清洁选项。

1.7 - 2010年11月30日

  • 通过清洁器中的新 link_target 选项使外部链接的目标属性强制执行可配置。仅对 CommentCleaner 启用此选项。

1.6 - 2010年11月18日

  • 纠正了包裹裸文本的空白测试。

1.5 - 2010年11月18日

  • 纠正了空白检查以处理所有 Unicode 空白。这修复了 xA0(或 HTML 中的 &nbsp;)被视为文本的问题。

1.4 - 2010年8月3日

  • 进行了一些小的代码清理。

  • 删除前导换行符。

1.3 - 2010年7月30日

  • 删除所有顶级 br 元素。块级元素中的换行符是可以的,但不应该用于在块元素之间添加垂直间距。

1.2 - 2010年2月15日

  • 修复了文档中的一个错误。

  • 删除尾随换行符。

1.1 - 2010年2月5日

  • 添加了一个简单的 StripMarkup 方法。

  • 添加了 z3c.form 集成所需的 ZCML。

1.0 - 2010年2月5日

  • 首次发布

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。

源分布

htmllaundry-2.2.tar.gz (10.8 kB 查看散列)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面