1

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

4

5 に答える 5

5
>>> 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']

これにより、(Unicode) 文字列のリストが得られます。1 つの文字列に変換する場合は、 を使用します''.join(thatlist)

于 2010-03-10T06:59:51.657 に答える
4

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

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 }}

ところで、これは最速の方法の1つです。

于 2010-03-10T16:42:27.713 に答える
1

遅いけど。

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

http://jinja.pocoo.org/docs/api/#jinja2.Markup.striptags

from jinja2 import Markup 
Markup("<div>About</div>").striptags()
u'About'
于 2013-12-02T13:29:47.840 に答える
1

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
于 2010-03-10T06:59:10.880 に答える
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 = '<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)

版画:

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

于 2010-03-10T07:00:52.570 に答える