Skip to content

Commit 594baa5

Browse files
committed
优化tools.del_html_tag 函数
1 parent 233406c commit 594baa5

1 file changed

Lines changed: 31 additions & 22 deletions

File tree

feapder/utils/tools.py

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -805,36 +805,44 @@ def get_text(soup, *args):
805805
return ""
806806

807807

808-
def del_html_tag(content, except_line_break=False, save_img=False, white_replaced=" "):
808+
def del_html_tag(content, save_line_break=True, save_p=False, save_img=False):
809809
"""
810810
删除html标签
811811
@param content: html内容
812-
@param except_line_break: 保留p标签
813-
@param save_img: 保留图片
814-
@param white_replaced: 空白符替换
812+
@param save_p: 保留p标签
813+
@param save_img: 保留图片标签
814+
@param save_line_break: 保留\n换行
815815
@return:
816816
"""
817-
content = replace_str(content, "(?i)<script(.|\n)*?</script>") # (?)忽略大小写
818-
content = replace_str(content, "(?i)<style(.|\n)*?</style>")
819-
content = replace_str(content, "<!--(.|\n)*?-->")
820-
content = replace_str(
821-
content, "(?!&[a-z]+=)&[a-z]+;?"
822-
) # 干掉&nbsp等无用的字符 但&xxx= 这种表示参数的除外
823-
if except_line_break:
824-
content = content.replace("</p>", "/p")
825-
content = replace_str(content, "<[^p].*?>")
826-
content = content.replace("/p", "</p>")
827-
content = replace_str(content, "[ \f\r\t\v]")
828-
817+
# js
818+
content = re.sub("(?i)<script(.|\n)*?</script>", "", content) # (?)忽略大小写
819+
# css
820+
content = re.sub("(?i)<style(.|\n)*?</style>", "", content) # (?)忽略大小写
821+
# 注释
822+
content = re.sub("<!--(.|\n)*?-->", "", content)
823+
# 干掉&nbsp;等无用的字符 但&xxx= 这种表示参数的除外
824+
content = re.sub("(?!&[a-z]+=)&[a-z]+;?", "", content)
825+
826+
if save_p and save_img:
827+
content = re.sub("<(?!(p[ >]|/p>|img ))(.|\n)+?>", "", content)
828+
elif save_p:
829+
content = re.sub("<(?!(p[ >]|/p>))(.|\n)+?>", "", content)
829830
elif save_img:
830-
content = replace_str(content, "(?!<img.+?>)<.+?>") # 替换掉除图片外的其他标签
831-
content = replace_str(content, "(?! +)\s+", "\n") # 保留空格
832-
content = content.strip()
831+
content = re.sub("<(?!img )(.|\n)+?>", "", content)
832+
elif save_line_break:
833+
content = re.sub("<(?!/p>)(.|\n)+?>", "", content)
834+
content = re.sub("</p>", "\n", content)
835+
else:
836+
content = re.sub("<(.|\n)*?>", "", content)
833837

838+
if save_line_break:
839+
# 把非换行符的空白符替换为一个空格
840+
content = re.sub("[^\S\n]+", " ", content)
841+
# 把多个换行符替换为一个换行符 如\n\n\n 或 \n \n \n 替换为\n
842+
content = re.sub("(\n ?)+", "\n", content)
834843
else:
835-
content = replace_str(content, "<(.|\n)*?>")
836-
content = replace_str(content, "\s+", white_replaced)
837-
content = content.strip()
844+
content = re.sub("\s+", " ", content)
845+
content = content.strip()
838846

839847
return content
840848

@@ -1298,6 +1306,7 @@ def compile_js(js_func):
12981306
ctx = execjs.compile(js_func)
12991307
return ctx.call
13001308

1309+
13011310
#############################################
13021311

13031312

0 commit comments

Comments
 (0)