为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

2 回答

"""
Description:正则清洗HTML数据
Author:
Prompt: code in python3 env
"""
"""
   re.I   使匹配对大小写不敏感
   re.L   做本地化识别(locale-aware)匹配
   re.M   多行匹配,影响^(开头)和$(结尾)
   re.S   匹配包含换行在内的所有字符
   re.U   根据Unicode字符集解析字符,这个标志影响 \w, \W, \b, \B
   re.X   该标志通过给予你更灵活的格式以便你将正则表达式写得更加
"""
import re

# 处理HTML标签文本
# @param htmlstr html字符串


def filter_tags(htmlstr):
   # 过滤doc_type
   htmlstr = ' '.join(htmlstr.split())
   re_doctype = re.compile(r'<!DOCTYPE .*?>', re.S)
   res = re_doctype.sub('', htmlstr)

   # 过滤CDATA
   re_cdata = re.compile( r'//<!CDATA\[[ >] //\] >', re.I)
   res = re_cdata.sub('', res)

   # Script
   re_script = re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>', re.I)
   res = re_script.sub('', res)

   # 注释
   re_script = re.compile('<!--.*?-->', 0)
   res = re_script.sub('', res)

   # 换行符
   re_br = re.compile('<br\n*?/?>')
   res = re_br.sub('\n', res)

   # HTML 标签
   re_lable = re.compile('</?\w[^>]*>')
   res = re_lable.sub('', res)

   # 转义字符
   re_esc = re.compile('&.*?;')
   res = re_esc.sub('', res)

   # 空格处理
   re_blank = re.compile('\s+') # \s包含 \t \n \r \f \v
   res = re_blank.sub(' ', res)

   # 超链接处理
   re_http = re.compile(r'(http://.+.html)')
   res = re_http.sub(' ', res)

   d = lambda pattern, flags=0: re.compile(pattern, flags)
   for re_type in re_mate:
      re_type = d(*re_type)
      res = re_type.sub(' ', res)
   return res

def read_file(read_path):
   str_doc = ''
   with open(read_path, 'r', encoding='utf-8') as f:
      str_doc = f.read()
   return str_doc


if __name__ == '__main__':
   str_doc = read_file(r'../data/html/re.html')
   res = filter_tags(str_doc)
   # print(res)


   with open(r'../data/html/test.html', 'w', encoding='utf-8') as f:
      f.write(res)
   print('No Exception') # 我是通过另一个编辑器进行打开预览的

这是我的笔记

1 回复 有任何疑惑可以回复我~
#1

weixin_慕尼黑7100639

你好,这段代码下面的re_mate报错(未定义) for re_type in re_mate: re_type = d(*re_type) res = re_type.sub(' ', res) return res
2022-07-07 回复 有任何疑惑可以回复我~

https://github.com/bainingchao/DataProcess


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

源码能分享下吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信