(Rubyのサニタイズに相当)AppEngineのはPythonのEnvにHTMLタグを削除
-
19-09-2019 - |
質問
私は、私は、HTMLタグを取り除く手助けが、テキスト値を保持しますPythonモジュールを探しています。私は前にBeautifulSoupを試してみましたが、私はこの単純なタスクを実行する方法を見つけ出すことができませんでした。私はこれを行うことができますPythonモジュールの検索を試みたが、それらはすべてAppEngineの上でうまく動作しない他のライブラリに依存しているようだ。
以下はRubyのサニタイズライブラリからのサンプルコードであり、それは私がPythonで後の午前何ます:
require 'rubygems'
require 'sanitize'
html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'
Sanitize.clean(html) # => 'foo'
ご提案いただきありがとうございます。
-e
解決
>>> import BeautifulSoup
>>> html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'
>>> bs = BeautifulSoup.BeautifulSoup(html)
>>> bs.findAll(text=True)
[u'foo']
このはあなたに(ユニコード)文字列のリストを提供します。あなたが単一の文字列に、それを有効にする場合は、''.join(thatlist)
を使用します。
他のヒント
あなたが別のLIBSを使用したくない場合は、
あなたは標準のDjangoのutilsのをインポートすることができます。たとえばます:
from django.utils.html import strip_tags
html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg'
stripped = strip_tags(html)
print stripped
# you got: foo
:あなたが何かを必要といけないので、また、その既にちょうどこのように、フィルタを使用し、Djangoのテンプレートに含ま
{{ unsafehtml|striptags }}
ところで、これは最速の方法の一つです。
lxmlのを使用します:
htmlstring = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'
from lxml.html import fromstring
mySearchTree = fromstring(htmlstring)
for item in mySearchTree.cssselect('a'):
print item.text
#!/usr/bin/python
from xml.dom.minidom import parseString
def getText(el):
ret = ''
for child in el.childNodes:
if child.nodeType == 3:
ret += child.nodeValue
else:
ret += getText(child)
return ret
html = '<b>this is <a href="http://foo.com/">a link </a> and some bold text </b> followed by <img src="http://foo.com/bar.jpg" /> an image'
dom = parseString('<root>' + html + '</root>')
print getText(dom.documentElement)
プリントます:
これは、画像に続くリンクといくつかの太字のテキストである
後期、しかします。
あなたはJinja2.Markupを使用することができます()
http://jinja.pocoo.org/docs/api/# jinja2.Markup.striptagsする
from jinja2 import Markup
Markup("<div>About</div>").striptags()
u'About'
所属していません StackOverflow