私は以外のすべてのHTML/JavaScriptを取り除くしたいと思います:Python文字列内の特定のhtmlタグを削除する最も速い方法は何ですか?
<b></b>
<ul></ul>
<li></li>
<a></a>
感謝。
私は以外のすべてのHTML/JavaScriptを取り除くしたいと思います:Python文字列内の特定のhtmlタグを削除する最も速い方法は何ですか?
<b></b>
<ul></ul>
<li></li>
<a></a>
感謝。
はあなたが速いの方法や正しいです方法をしたいですか?正規表現ベースのアプローチは正しいとは思わないし、XSSまで攻撃を開く可能性があります。
あなたはBeautiful Soupあるいはhtmllib
のようなHTMLパーサを使用する必要があります。
また、<a>
はjavascript:
href
秒を含めることができ、javascriptをしている様々なon
*属性もあります。おそらく、それらのすべてを取り除きたいと思うでしょう。一般的には、ホワイトリストのアプローチが最善です。あなたが知っている属性(および属性値)のみを安全に保つだけです。
+1 for not Regex –
保存する要素をプレースホルダーの値で置き換え、残っているものを正規表現<。*>に置き換え、最後にプレースホルダーを対応するhtml要素に置き換えます。
、あなたに余分な計算なしでサポートBBコードの素敵な副作用を与えます。 – Daniel
私はローレンスに同意しながら、迅速かつ汚い99%のアプローチは他の問題を作成せずに仕事を取得する機会があります。
import re
CLEANBODY_RE = re.compile(r'<(/?)(.+?)>', re.M)
def _repl(match):
tag = match.group(2).split(' ')[0]
if tag == 'p':
return '<%sp>' % match.group(1)
elif tag in ('a', 'br', 'ul', 'li', 'b', 'strong', 'em', 'i'):
return match.group(0)
return u''
def cleanbody(html):
return CLEANBODY_RE.sub(_repl, html)
つのWord -
はここで正規表現ベースのアプローチを示す例です。正規表現:) – Machinarius
母、怖い言葉:)私はプレースホルダのためのBBコード使用することをお勧め – ensnare