質問

ドキュメント

問題は私が不良タグを完全に削除したいだけでなく、それらを脱出するだけではありません(とにかく悪い考えのようです)。

パッチここはしません予想通りの作業(それは<tag>content</tag>の内容を保持します)。

具体的には、このようなことをしたいです。

入力:

<script>bad_thing();</script>
<style>* { background: #000; }</style>
<h1>Hello world</h1>
Lorem ipsum
.

出力:

<h1>Hello world</h1>
Lorem ipsum
.

それを達成する方法についてのアイデア?私は美しい人を試してみましたが、うまく機能していないようで、LXMLは非常に奇妙な場所に<p></p>タグを挿入します(例えば、SRC attrs周辺)。これまでのところ、html5libは、それらを脱出する代わりにタグを削除するだけで入手できれば、その目的のための最良のことであるようです。

役に立ちましたか?

解決

The challenge is to also strip unwanted nested tags. It isn't pretty but it's a step in the right direction:

from lxml.html import fromstring
from lxml import etree

html = '''
<script>bad_thing();</script>
<style>* { background: #000; }</style>
<h1>Hello world<script>bad_thing();</script></h1>
Lorem ipsum
<script>bad_thing();</script>
<b>Bold Text</b>
'''

l = []
doc = fromstring(html)
for el in doc.xpath(".//h1|.//b"):
    i = etree.Element(el.tag)
    i.text, i.tail = el.text, el.tail
    l.append(etree.tostring(i))

print ''.join(l)

Which outputs:

<h1>Hello world</h1>
Lorem ipsum
<b>Bold Text</b>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top