有没有办法使用lxml.html删除/转义html标签,而不是美丽的有一些xss的问题?我尝试使用更清洁,但我想删除所有的HTML。删除python中的所有html?
回答
尝试在元素上使用.text_content()
方法,在使用lxml.html.clean
来摆脱不需要的内容(脚本标签等)后可能是最好的方法。例如:
from lxml import html
from lxml.html.clean import clean_html
tree = html.parse('http://www.example.com')
tree = clean_html(tree)
text = tree.getroot().text_content()
我相信,这个代码可以帮助您:
from lxml.html.clean import Cleaner
html_text = "<html><head><title>Hello</title><body>Text</body></html>"
cleaner = Cleaner(allow_tags=[''], remove_unknown_tags=False)
cleaned_text = cleaner.clean_html(html_text)
经过一个快速的实验,这个解决方案似乎比这个更好的工作,例如http://stackoverflow.com/a/5332984/787842,但我想知道更多关于正确参数化'Cleaner'对象的方法(因为有很多选项)。例如在这种情况下,在逻辑上,让一个空的'allow_tags'列表和'remove_unknown_tags'设置为'False'在我看来有点奇怪。 – cjauvin 2015-05-11 14:40:04
@cjauvin:当然,你是对的!这是一种破解。但是我确定没有人想要在参数'remove_tags'中指定所有必须删除的标签,如果他们想要删除它们。不幸的是,在这种情况下,'Cleaner'的实现鼓励用户使用带有'remove_unknown_tags'的'allow_tags'来达到这个目的https://github.com/lxml/lxml/blob/54a8bfedcd0f32274a4ebf9e2d8e391fe759aba5/src/lxml/html/clean.py#L387 – dni 2015-05-13 12:31:17
- 1. 删除HTML页面中的所有JavaScript
- 2. Python HTML删除
- 3. Python和Django。从html中删除所有js
- 4. PHP删除所有的HTML,但评论
- 5. 删除两点之间的所有HTML
- 6. 在Python中删除HTML块
- 7. 删除所附的html
- 8. 删除“?”后的所有内容python
- 9. 安全地从Python中的字符串中删除所有的HTML代码
- 10. 删除所有元素\ html,但输入
- 11. Codeigniter删除所有html标签
- 12. qgis 2.12 - 通过python删除所有TextAnnotations
- 13. 从rails中的属性中删除所有html标记
- 14. 使用kendoEditor从MVC中的HTML TextArea中删除所有标记
- 15. 从Nokogiri中删除HTML中的所有外部资源
- 16. 如何删除Python中的字典中的所有0?
- 17. 删除所有Python版本并清除安装Python 3
- 18. 删除tinyeditor中的所有html标签所见即所得的编辑器
- 19. 如何删除除img以外的所有html标签?
- 20. Рhppreg_replace - 删除除html标记以外的所有文本IMG
- 21. 删除除标记外的所有html标记
- 22. JQUERY:如何删除除BR和IMG所有的HTML标签DIV
- 23. Python - 从文件夹中的所有文件中删除重音
- 24. NSFetchedResultsController删除所有
- 25. 删除所有列
- 26. 删除所有django.contrib.messages
- 27. 删除所有行
- 28. 删除所有,但
- 29. 使用JavaScript删除HTML中的所有表格
- 30. 从HTML字符串中删除所有的div标签
如何beautifulsoup具有跨站点脚本问题? – jball 2010-10-19 22:40:02