我有一个包含文本和 HTML 的字符串。我想删除或禁用某些 HTML 标记,例如 <script>
,同时允许其他人,以便我可以安全地在网页上呈现它。我有一个允许的标签列表,如何处理字符串以删除任何其他标签?
最佳答案
使用 lxml.html.clean
!这很容易!
from lxml.html.clean import clean_html
print clean_html(html)
假设以下html:
html = '''\
<html>
<head>
<script type="text/javascript" src="evil-site"></script>
<link rel="alternate" type="text/rss" src="evil-rss">
<style>
body {background-image: url(javascript:do_evil)};
div {color: expression(evil)};
</style>
</head>
<body onload="evil_function()">
<!-- I am interpreted for EVIL! -->
<a href="javascript:evil_function()">a link</a>
<a href="#" onclick="evil_function()">another link</a>
<p onclick="evil_function()">a paragraph</p>
<div style="display: none">secret EVIL!</div>
<object> of EVIL! </object>
<iframe src="evil-site"></iframe>
<form action="evil-site">
Password: <input type="password" name="password">
</form>
<blink>annoying EVIL!</blink>
<a href="evil-site">spam spam SPAM!</a>
<image src="evil!">
</body>
</html>'''
结果...
<html>
<body>
<div>
<style>/* deleted */</style>
<a href="">a link</a>
<a href="#">another link</a>
<p>a paragraph</p>
<div>secret EVIL!</div>
of EVIL!
Password:
annoying EVIL!
<a href="evil-site">spam spam SPAM!</a>
<img src="evil!">
</div>
</body>
</html>
您可以自定义要清理的元素等等。
关于python - 从 Python 字符串中删除不在允许列表中的 HTML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/699468/