Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除AppEngine Python环境中的HTML标记(相当于Ruby的Sanitize)_Python_Google App Engine_Html Sanitizing - Fatal编程技术网

删除AppEngine Python环境中的HTML标记(相当于Ruby的Sanitize)

删除AppEngine Python环境中的HTML标记(相当于Ruby的Sanitize),python,google-app-engine,html-sanitizing,Python,Google App Engine,Html Sanitizing,我正在寻找一个python模块,它将帮助我摆脱HTML标记,但保留文本值。我以前试过BeautifulSoup,但我不知道如何完成这个简单的任务。我试着搜索能够做到这一点的Python模块,但它们似乎都依赖于其他在AppEngine上不能很好工作的库 下面是Ruby的sanitize库中的示例代码,这就是我在Python中所追求的: require 'rubygems' require 'sanitize' html = '<b><a href="http://foo.com

我正在寻找一个python模块,它将帮助我摆脱HTML标记,但保留文本值。我以前试过BeautifulSoup,但我不知道如何完成这个简单的任务。我试着搜索能够做到这一点的Python模块,但它们似乎都依赖于其他在AppEngine上不能很好工作的库

下面是Ruby的sanitize库中的示例代码,这就是我在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

使用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
使用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
这将提供Unicode字符串的列表。如果要将其转换为单个字符串,请使用.jointhatlist

这将提供Unicode字符串的列表。如果要将其转换为单个字符串,请使用.jointhatlist

印刷品:

这是一个链接和一些粗体文本,后跟一个图像

印刷品:

这是一个链接和一些粗体文本,后跟一个图像


如果不想使用单独的lib,那么可以导入标准的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

顺便说一句,这是最快的方法之一。

如果不想使用单独的lib,那么可以导入标准的django util。例如:

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
顺便说一句,这是最快的方法之一。

晚了,但是

您可以使用Jinja2.Markup

很晚了,但是

您可以使用Jinja2.Markup


谢谢阿玛霍什。我认为应用程序引擎支持minidom,所以应该可以很好地工作。Amarghosh,我接受了Alex的回答,因为BeautifulSoup似乎可以更好地处理糟糕的标记。非常感谢您提供的代码片段,不过我当然可以将其用于我可以信任的标记。谢谢Amarghosh。我认为应用程序引擎支持minidom,所以应该可以很好地工作。Amarghosh,我接受了Alex的回答,因为BeautifulSoup似乎可以更好地处理糟糕的标记。非常感谢您提供的代码片段,不过我当然可以将其用于我可以信任的标记。谢谢,Alex。这应该行得通——上次我尝试BeautifulSoup时,我一个节点一个节点地解析,速度变得非常慢。现在我已经改变了处理HTML代码的方式,我可以使用BeautifulSoup进行清理。我完全忘记了text=True选项。谢谢要在App Engine中使用,请在本地安装BeatifulSoup,并使用/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages中的文件。或者用这个:谢谢你,亚历克斯。这应该行得通——上次我尝试BeautifulSoup时,我一个节点一个节点地解析,速度变得非常慢。现在我已经改变了处理HTML代码的方式,我可以使用BeautifulSoup进行清理。我完全忘记了text=True选项。谢谢要在App Engine中使用,请在本地安装BeatifulSoup,并使用/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages中的文件。或者干脆用这个:谢谢,大红鲍勃。我花了一段时间让我的机器上运行的lxml符合您的代码-它可以工作!我还没有在AppEngine上测试过它,如果它不工作,我会告诉你。lxml似乎也能管理糟糕的标记。谢谢,bigredbob。我花了一段时间让我的机器上运行的lxml符合您的代码-它可以工作!我还没有在AppEngine上测试过它,如果它不工作,我会告诉你。lxml似乎也能管理糟糕的标记。谢谢,米哈伊尔。我来试试。谢谢,米哈伊尔。我要试一试。
{{ unsafehtml|striptags }}
from jinja2 import Markup 
Markup("<div>About</div>").striptags()
u'About'