0

html5libを使用してユーザーからのカスタム HTML を検証しています。問題は、html5lib がhtmlheadおよびbodyタグを追加していることです。これは必要ありません。

parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("simpleTree"))
f = open('/home/user/ex.html')
doc = parser.parse(f)
doc.toxml()
'<html><head/><body><div>\n  <a href="http://speedhunters.com">speedhunters.com\n</a></div><a href="http://speedhunters.com">\n</a></body></html>'

これは検証済みで、サニタイズできますが、これらのタグを削除したり、ツリーに追加したりしないようにするにはどうすればよいですか? つまり、使用を除外replaceします。

4

3 に答える 3

1

「一般的でない」html を扱っている場合は、lxmlを選択することをお勧めします。

于 2012-04-30T14:35:26.170 に答える
1

うわー、html5lib にはひどいドキュメントがあります。

ソースを見て、簡単なテストケースに取り組んでいると、これはうまくいくようです:

import html5lib
from html5lib import treebuilders
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("simpleTree"))
with open('test.html') as test:
    doc = parser.parse(test)
    for child in doc:
        if child.parent.name == "body":
            return child.toxml()

少しハックですが、replace().

于 2012-04-30T13:06:36.840 に答える