标签分类
技术文章
当前位置:主页 > 计算机编程 > python > python对html过滤处理的方法

python对html过滤处理实例详解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:64

python对html过滤处理的方法

这篇文章主要知识点是关于python,html,过滤,python对html过滤处理的方法,Python使用正则表达式过滤或替换HTML标签方法介绍 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python并行编程参考手册
  • 类型:Python编程大小:41.4 MB格式:PDF出版:东南大学出版社作者:吉安卡洛·扎克尼
立即下载
Python编程快速上手:让繁琐工作自动化
  • 类型:Python3编程大小:20.7 MB格式:PDF出版:人民邮电出版社作者:斯维加特
立即下载

更多相关的学习资源可以参阅 程序设计电子书Python电子书、等栏目。

如下所示:

##过滤HTML中的标签
#将HTML中标签等信息去掉
#@param htmlstr HTML字符串.
def filter_tags(htmlstr):
 #先过滤CDATA
 re_cdata=re.compile('//<!\[CDATA\[[^>]*//\]\]>',re.I) #匹配CDATA
 re_script=re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>',re.I)#Script
 re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#style
 re_br=re.compile('<br\s*?/?>')#处理换行
 re_h=re.compile('</?\w+[^>]*>')#HTML标签
 re_comment=re.compile('<!--[^>]*-->')#HTML注释
 re_stopwords=re.compile('\u3000')#去除无用的'\u3000'字符
 s=re_cdata.sub('',htmlstr)#去掉CDATA
 s=re_script.sub('',s) #去掉SCRIPT
 s=re_style.sub('',s)#去掉style
 s=re_br.sub('\n',s)#将br转换为换行
 s=re_h.sub('',s) #去掉HTML 标签
 s=re_comment.sub('',s)#去掉HTML注释
 s=re_stopwords.sub('',s)
 #去掉多余的空行
 blank_line=re.compile('\n+')
 s=blank_line.sub('\n',s)
 s=replaceCharEntity(s)#替换实体
 return s

##替换常用HTML字符实体.
#使用正常的字符替换HTML中特殊的字符实体.
#你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
#@param htmlstr HTML字符串.
def replaceCharEntity(htmlstr):
 CHAR_ENTITIES={'nbsp':' ','160':' ',
    'lt':'<','60':'<',
    'gt':'>','62':'>',
    'amp':'&','38':'&',
    'quot':'"','34':'"',}

 re_charEntity=re.compile(r'&#?(?P<name>\w+);')
 sz=re_charEntity.search(htmlstr)
 while sz:
  entity=sz.group()#entity全称,如>
  key=sz.group('name')#去除&;后entity,如>为gt
  try:
   htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1)
   sz=re_charEntity.search(htmlstr)
  except KeyError:
   #以空串代替
   htmlstr=re_charEntity.sub('',htmlstr,1)
   sz=re_charEntity.search(htmlstr)
 return htmlstr

以上这篇python对html过滤处理的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

Python使用正则表达式过滤或替换HTML标签方法介绍

这篇文章主要介绍了Python使用正则表达式过滤或替换HTML标签的方法,简单介绍了Python正则相关语法并结合具体实例形式分析了Python基于正则表达式的HTML标签过滤与替换相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python使用正则表达式过滤或替换HTML标签的方法。分享给大家供大家参考,具体如下:

python正则表达式关键内容:

python正则表达式转义符:

. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

常用的python正则表达式限定符代码/语法说明:

*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
关于python正则表达式命名组:
命名组:(?P<name>.....)
这篇文章里面还提到了界定( 问号开头,前向则有个'<'号,非则有个'!' 号 ):
前向界定 (?<=…)
后向界定 (?=…)
前向非界定 (?<!....)
后向非界定 (?!.....)

Python通过正则表达式去除(过滤)HTML标签示例代码


#-*- coding:utf-8 -*-
import re
##过滤HTML中的标签
# 将HTML中标签等信息去掉
# @param htmlstr HTML字符串.
def filter_tags(htmlstr):
  # 先过滤CDATA
  re_cdata = re.compile("//<!
CDATA\[[>]∗//
\]>", re.I) #匹配CDATA
  re_script = re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>', re.I) # Script
  re_style = re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>', re.I) # style
  re_br = re.compile('<br\s*?/?>') # 处理换行
  re_h = re.compile('</?\w+[^>]*>') # HTML标签
  re_comment = re.compile('<!--[^>]*-->') # HTML注释
  s = re_cdata.sub('', htmlstr) # 去掉CDATA
  s = re_script.sub('', s) # 去掉SCRIPT
  s = re_style.sub('', s) # 去掉style
  s = re_br.sub('\n', s) # 将br转换为换行
  s = re_h.sub('', s) # 去掉HTML 标签
  s = re_comment.sub('', s) # 去掉HTML注释
  # 去掉多余的空行
  blank_line = re.compile('\n+')
  s = blank_line.sub('\n', s)
  s = replaceCharEntity(s) # 替换实体
  return s
##替换常用HTML字符实体.
# 使用正常的字符替换HTML中特殊的字符实体.
# 你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
# @param htmlstr HTML字符串.
def replaceCharEntity(htmlstr):
  CHAR_ENTITIES = {'nbsp': ' ', '160': ' ',
           'lt': '<', '60': '<',
           'gt': '>', '62': '>',
           'amp': '&', '38': '&',
           'quot': '"''"', '34': '"', }
  re_charEntity = re.compile(r'?(?P<name>\w+);')
  sz = re_charEntity.search(htmlstr)
  while sz:
    entity = sz.group() # entity全称,如>
    key = sz.group('name') # 去除&;后entity,如>为gt
    try:
      htmlstr = re_charEntity.sub(CHAR_ENTITIES[key], htmlstr, 1)
      sz = re_charEntity.search(htmlstr)
    except KeyError:
      # 以空串代替
      htmlstr = re_charEntity.sub('', htmlstr, 1)
      sz = re_charEntity.search(htmlstr)
  return htmlstr
def repalce(s, re_exp, repl_string):
  return re_exp.sub(repl_string, s)
if __name__ == '__main__':
  s = file('test.html').read()
  news = filter_tags(s)
  print news

以上就是Python使用正则表达式过滤或替换HTML标签方法介绍的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 vue项目中使用md5加密以及、 解决axios.interceptors.respon、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:python中的Turtle函数库用法整理

下一篇:Python读mat文件转为csv的实例代码详解

展开 +

收起 -

学习笔记
网友NO.812463

详解Appium+Python之生成html测试报告

思考: 测试用例执行后,如何生成一个直观漂亮的测试报告呢? 分析: 1.unittest单元测试框架本身带有一个textTestRunner类,可以生成txt文本格式的测试报告,但是页面不够直观 2.我们可以导入第三方库,比如常用的HTMLTestRunner类,可以生成html格式测试报告 3.首先去下载HTMLTestRunner_PY3.py脚本(我这里采用Python3.7),然后放置在Python3.7路径下的Lib目录下,使用时需要导入(即import HTMLTestRunner_PY3) 代码示例如下: if __name__ == "__main__": #实例化测试套件 suite = unittest.TestSuite() #加载测试用例 suite.addTest(TestCase("test_login")) #生成测试报告 # 选择指定时间格式 timestr = time.strftime('%Y-%m-%d%H%M%S', time.localtime(time.time())) # 定义测试报告存放路径和报告名称 Report = os.path.join( PATH('E://testing_code/code/SmartSiteTestScript/report/test_report_') + timestr + '.html') with open(Report, 'wb') as f: runner = HTMLTestRunner_PY3.HTMLTestRunner(stream=f, verbosity=2, title='XXXX自动化测试报告', description='执行人:丹姐') runner.run(suite) # 关闭测试报告 f.close() 解析: 1.在测试报告名中显示时间:(引入time包) timestr=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time())) time.time():获取当前时间戳 time.ctime():获取当前时间的字符串 time.localtime():当前时间的struct_time形式 time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime()):获取特……

网友NO.254962

Python HTML解析模块HTMLParser用法分析【爬虫工具】

本文实例讲述了Python HTML解析模块HTMLParser用法。分享给大家供大家参考,具体如下: 简介 先简略介绍一下。实际上,HTMLParser是python用来解析HTML的 内置模块 。它可以分析出HTML里面的标签、数据等等,是一种处理HTML的简便途径。HTMLParser采用的是一种 事件驱动 的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的用户 回调函数 的命名都是以" handle_ "开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLParser派生出新的类,然后重新定义这几个以"handle_"开头的函数即可。这几个函数包括: (1) handle_startendtag 处理开始标签和结束标签(即单标签) (2) handle_starttag 处理开始标签,比如xx (3) handle_endtag 处理结束标签,比如/xx (4) handle_charref 处理特殊字符串,就是以nbsp; 处理一些特殊字符,以nbsp; (6) handle_data 处理数据,就是xxdata/xx中间的那些数据 (7) handle_comment 处理注释 (8) handle_decl 处理!开头的,比如!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" (9) handle_pi 处理形如?instruction的东西 实例 OK,废话少说,直接上手,来一个简单的爬虫实例——抓取贴吧图片。 from html.parser import HTMLParserfrom urllib import requestclass MyHTMLParser(HTMLParser): # 创建HTML解析类 def _……

网友NO.609353

Python自动生成HTML的方法实例讲解

python 自动化批量生成前端的HTML可以大大减轻工作量 下面演示两种生成 HTML 的方法 方法一:使用 webbrowser #coding:utf-8 import webbrowser#命名生成的htmlGEN_HTML = test.html #打开文件,准备写入f = open(GEN_HTML,w) #准备相关变量str1 = my name is :str2 = --MichaelAn-- # 写入HTML界面中message = htmlhead/headbodyp%s/pp%s/p/body/html%(str1,str2) #写入文件f.write(message) #关闭文件f.close() #运行完自动在网页中显示webbrowser.open(GEN_HTML,new = 1) webbrowser.open(url, new=0, autoraise=True) Display url using the default browser. If new is 0, the url is opened in the same browser window if possible. If new is 1, a new browser window is opened if possible. If new is 2, a new browser page (tab) is opened if possible. If autoraise is True, the window is raised if possible (note that under many window managers this will occur regardless of the setting of this variable). 方法二:使用pyh #coding:utf-8from pyh import *# there is a bug from pyh import *page = PyH(My wonderful PyH page)page.addCSS(myStylesheet1.css, myStylesheet2.css)page.addJS(myJavascript1.js, myJavascript2.js)page h1(My big title, cl=center)page div(cl=myCSSclass1 myCSSclass2, id=myDiv1) p(I love PyH!, id=myP1)mydiv2 = page div(id=myDiv2)mydiv2 h2(A smaller title) + p(Followed by a paragraph.)page div(id=myDiv3)page.myDiv3.attributes[cl] = myCSSclass3page.myDiv3 p(Another paragraph)page.printOut(a.html) 对于大型的 HTML ,使用方法一可……

网友NO.969073

python对html过滤处理方法总结

如下所示: ##过滤HTML中的标签#将HTML中标签等信息去掉#@param htmlstr HTML字符串.def filter_tags(htmlstr): #先过滤CDATA re_cdata=re.compile(//!\[CDATA\[[^]*//\]\],re.I) #匹配CDATA re_script=re.compile(\s*script[^]*[^]*\s*/\s*script\s*,re.I)#Script re_style=re.compile(\s*style[^]*[^]*\s*/\s*style\s*,re.I)#style re_br=re.compile(br\s*?/?)#处理换行 re_h=re.compile(/?\w+[^]*)#HTML标签 re_comment=re.compile(!--[^]*--)#HTML注释 re_stopwords=re.compile(\u3000)#去除无用的\u3000字符 s=re_cdata.sub(,htmlstr)#去掉CDATA s=re_script.sub(,s) #去掉SCRIPT s=re_style.sub(,s)#去掉style s=re_br.sub(\n,s)#将br转换为换行 s=re_h.sub(,s) #去掉HTML 标签 s=re_comment.sub(,s)#去掉HTML注释 s=re_stopwords.sub(,s) #去掉多余的空行 blank_line=re.compile(\n+) s=blank_line.sub(\n,s) s=replaceCharEntity(s)#替换实体 return s##替换常用HTML字符实体.#使用正常的字符替换HTML中特殊的字符实体.#你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.#@param htmlstr HTML字符串.def replaceCharEntity(htmlstr): CHAR_ENTITIES={nbsp: ,160: , lt:,60:, gt:,62:, amp:,38:, quot:,34:,} re_charEntity=re.compile(r#?(?Pname\w+);) sz=re_charEntity.search(htmlstr) while sz: entity=sz.group()#entity全称,如 key=sz.group(name)#去除;后entity,如为gt try: htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1) sz=re_charEntity.search(htmlstr) except KeyError: #以空串代替 htmlstr=re_charEntity.sub(,htm……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明