1


0

AppEngine Python EnvでHTMLタグを削除します(Rubyのサニタイズに相当)

HTMLタグを削除するのに役立つが、テキスト値を保持するPythonモジュールを探しています。 以前にBeautifulSoupを試しましたが、この簡単なタスクを実行する方法がわかりませんでした。 これを実行できるPythonモジュールを検索してみましたが、それらはすべてAppEngineでうまく動作しない他のライブラリに依存しているようです。

以下は、Rubyのサニタイズライブラリのサンプルコードであり、それがPythonで私が求めていることです。

require 'rubygems'
require 'sanitize'

html = 'foo'

Sanitize.clean(html) # => 'foo'

あなたの提案をありがとう。

-e

5 Answer


5


>>> import BeautifulSoup
>>> html = 'foo'
>>> bs = BeautifulSoup.BeautifulSoup(html)
>>> bs.findAll(text=True)
[u'foo']

これにより、(Unicode)文字列のリストが表示されます。 単一の文字列にしたい場合は、 ’'。join(thatlist)`を使用します。


4


個別のライブラリを使用したくない場合は、標準のdjango utilsをインポートできます。 例えば:

from django.utils.html import strip_tags
html = 'foo


1


lxmlの使用:

htmlstring = 'foo'

from lxml.html import fromstring

mySearchTree = fromstring(htmlstring)

for item in mySearchTree.cssselect('a'):
    print item.text


1


#!/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 = 'this is a link  and some bold text   followed by  an image'
dom = parseString('' + html + '')
print getText(dom.documentElement)

プリント:

_ これはリンクであり、いくつかの太字のテキストの後に画像が続きます _


1


遅いですが。

Jinja2.Markup()を使用できます

from jinja2 import Markup
Markup("About").striptags()
u'About'