@@ -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- ) # 干掉 等无用的字符 但&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+ # 干掉 等无用的字符 但&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