我有一个HTML编码的字符串:
'''<img class="size-medium wp-image-113"\
style="margin-left: 15px;" title="su1"\
src="http://blah.org/wp-content/uploads/2008/10/su1-300x194.jpg"\
alt="" width="300" height="194" />'''
我想将其更改为:
<img class="size-medium wp-image-113" style="margin-left: 15px;"
title="su1" src="http://blah.org/wp-content/uploads/2008/10/su1-300x194.jpg"
alt="" width="300" height="194" />
我希望将其注册为HTML,以便浏览器将其呈现为图像,而不是显示为文本。
字符串的存储方式是这样的,因为我正在使用一种名为的网络抓取工具BeautifulSoup,它将“扫描”网页并从中获取某些内容,然后以该格式返回字符串。
我已经找到了如何在C#中而不是在Python中执行此操作。有人可以帮我吗?
给定Django用例,对此有两个答案。这是它的django.utils.html.escape
功能,以供参考:
def escape(html):
"""Returns the given HTML with ampersands, quotes and carets encoded."""
return mark_safe(force_unicode(html).replace('&', '&').replace('<', '&l
t;').replace('>', '>').replace('"', '"').replace("'", '''))
为了解决这个问题,Jake的答案中描述的Cheetah函数应该起作用,但是缺少单引号。此版本包含更新的元组,并且替换顺序相反,以避免出现对称问题:
def html_decode(s):
"""
Returns the ASCII decoded version of the given HTML string. This does
NOT remove normal HTML tags like <p>.
"""
htmlCodes = (
("'", '''),
('"', '"'),
('>', '>'),
('<', '<'),
('&', '&')
)
for code in htmlCodes:
s = s.replace(code[1], code[0])
return s
unescaped = html_decode(my_string)
但是,这不是一般的解决方案。仅适用于以编码的字符串django.utils.html.escape。更笼统地说,坚持使用标准库是一个好主意:
# Python 2.x:
import HTMLParser
html_parser = HTMLParser.HTMLParser()
unescaped = html_parser.unescape(my_string)
# Python 3.x:
import html.parser
html_parser = html.parser.HTMLParser()
unescaped = html_parser.unescape(my_string)
# >= Python 3.5:
from html import unescape
unescaped = unescape(my_string)
建议:将未转义的HTML存储在数据库中可能更有意义。如果可能的话,值得一探的是从BeautifulSoup获得未转义的结果,并完全避免此过程。
对于Django,转义仅在模板渲染期间发生;因此,为了防止转义,您只需告诉模板引擎不要转义您的字符串即可。为此,请在模板中使用以下选项之一:
{{ context_var|safe }}
{% autoescape off %}
{{ context_var }}
{% endautoescape %}
问题内容: 我正在尝试从此处NYTimes.com解码HTML条目,但无法弄清楚自己在做什么错。 举个例子: 我尝试了BeautifulSoup,decode(’iso-8859-1’)和django.utils.encoding的smart_str,但没有成功。 问题答案: 尝试这个:
本文向大家介绍如何使用nodejs对base64进行编解码?相关面试题,主要包含被问及如何使用nodejs对base64进行编解码?时的应答技巧和注意事项,需要的朋友参考一下 轮子, https://www.npmjs.com/package/js-base64
问题内容: 如何使用jQuery解码字符串中的HTML实体? 问题答案: 安全说明: 使用此答案(下面以其原始形式保留)可能会在您的应用程序中引入XSS漏洞。您不应该使用此答案。 阅读lucascaro的答案以获取对该答案中漏洞的解释,然后改用该答案或MarkAmery的答案中的方法。 其实试试看
问题内容: 我正在尝试解码一些HTML实体,例如变为。 我有一个古老的宝石(html_helpers),但它似乎已经被抛弃了两次。 有什么建议吗?我将需要在模型中使用它。 问题答案: HTMLEntities可以做到:
问题内容: 我用python脚本下载了一个网页。在大多数情况下,这可以正常工作。 但是,这个有一个响应标头:GZIP编码,当我尝试打印此网页的源代码时,它的腻子中包含所有符号。 如何将其解码为普通文本? 问题答案: 我使用zlib从Web解压缩压缩的内容。
我试图防止CRLF注入(在用户输入很少的url中),并试图对url中的用户输入进行编码。我知道我也可以使用输入验证,但如果我使用ESAPI编码器,它是否有相应的解码器?如果它有,那么它是什么?如果不是,那么可以做什么来执行相同的编码和解码?