使用Python从HTML字符串中删除(而不是删除)指定标记的正确方法。
def strip_tags(html, tags=[]):
....
pass #return the html string by stripping the tags from the list这些问题解释了一切。
我将编写一个python函数,该函数以HTML作为输入,以及要删除的标记列表(模仿Django模板的removetags功能,因为它是不推荐的)
最简单的方法是什么?
以下方法对我无效,原因如下:
ALLOWED_TAGS)。remove_tags或kill_tags相结合有点接近于我所寻找的东西,但它做的比它应该做的更多,而且没有办法以最好的方式控制行为,比如请求Cleaner()保留邪恶的<script>标签。发布于 2017-08-28 08:26:12
发布于 2017-08-28 08:35:50
您可以扩展Python的HTMLParser并创建自己的解析器以跳过指定的标记。
使用给定链路中提供的示例,我将修改它以去掉<h1></h1>标记,但保留它们的数据:
from html.parser import HTMLParser
NOT_ALLOWED_TAGS = ['h1']
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
if tag not in NOT_ALLOWED_TAGS:
print("Encountered a start tag:", tag)
def handle_endtag(self, tag):
if tag not in NOT_ALLOWED_TAGS:
print("Encountered an end tag :", tag)
def handle_data(self, data):
print("Encountered some data :", data)
parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
'<body><h1>Parse me!</h1></body></html>')它将返回:
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
# h1 start tag here
Encountered some data : Parse me!
# h1 close tag here
Encountered an end tag : body
Encountered an end tag : html您现在可以维护一个NOT_ALLOWED_TAG列表,用于剥离这些标记。
https://stackoverflow.com/questions/45911848
复制相似问题