python - 从 Python 字符串中删除不在允许列表中的 HTML 标记

标签 python html

我有一个包含文本和 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/

相关文章:

python - 使用 Python 在 Mac 上获取开放应用程序

python - 向 pandas DataFrame 添加维度

python - 测量视频中两个轮廓之间的距离? OpenCV Python

python - 当作为参数传递或返回时,Numpy 如何处理内存分配?

javascript - 如何将元素的宽度设置为窗口宽度的一半

javascript - 在javascript中添加div?

php - 在 onClick HTML 事件之后调用 PHP 函数

python - 将数据帧转换为热图矩阵?

jquery - 谷歌 ReCaptcha 和欧芹

css - 图片漂浮的烦恼