python - 使用 html5lib 验证 HTML 片段

标签 python html forms validation html5lib

我正在使用 Python 和 html5lib检查在表单字段中输入的 HTML 代码是否有效。

我尝试了以下代码来测试有效的片段,但遇到了意外错误(至少对我来说):

>>> import html5lib
>>> from html5lib.filters import lint
>>> fragment = html5lib.parseFragment('<p><script>alert("Boo!")</script></p>')
>>> walker = html5lib.getTreeWalker('etree')
>>> [i for i in lint.Filter(walker(fragment))]
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/xyz/html5lib-1.0b3-py2.7.egg/html5lib/filters/lint.py", line 28, in __iter__
    raise LintError(_("Tag name is not a string: %(tag)r") % {"tag": name})
LintError: Tag name is not a string: u'p'

我做错了什么?

我的默认编码是utf-8:

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

最佳答案

lint 过滤器不会尝试验证 HTML(呃,是的,需要文档,糟糕的是……这是尚未发布 1.0 版本的很大一部分原因),它只是验证是否遵守了 Treewalker API 。但事实并非如此,因为它因为 issue #172 而被破坏了。 .

html5lib 不会尝试提供任何验证器,因为实现 HTML 验证器需要大量工作。

除了 Validator.nu 之外,我不知道有任何相当完整的验证器,尽管这是用 Java 编写的。不过,它提供了一个 Web API,可能适合您的目的。

关于python - 使用 html5lib 验证 HTML 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29567776/

相关文章:

python - 具有多个不同类型的可选参数的调用函数

javascript - 如何居中弹出窗体?

c# - ShowDialog() 之后窗体隐藏在另一个窗体后面

python - 如何按列计算连续 1 的出现次数并按 block 取平均值

python - 在偏移处读入字节数组?

python - 使用 Django 和 matplotlib 进行动态绘图

c# - 在表单中调用函数

javascript - 在两个输入中显示/隐藏密码

javascript - jQuery 动画 - 以不同的速度对不同的 div 进行动画处理

javascript - 使用 localStorage 填充表单