没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到采集上时进行了部分功能的完善,

1. 对自闭和标签处理

2. 以及对标签参数的过滤

from html.parser import HTMLParser

def strip_tags(html, allow_tags=None, allow_attrs=None):
result = []
start = []
data = []
# 特殊的自闭和标签, 按 HTML5 的规则, 如 <br> <img> <wbr> 不再使用 /> 结尾
special_end_tags = [
'area', 'base', 'br', 'col', 'embed', 'hr',
'img', 'input', 'keygen', 'link', 'meta', 'param',
'source', 'track', 'wbr'
] def starttag(tag, attrs):
if tag not in allow_tags:
return
start.append(tag)
my_attrs = []
if attrs:
for attr in attrs:
if allow_attrs and attr[0] not in allow_attrs:
continue
my_attrs.append(attr[0] + '="' + attr[1] + '"')
if my_attrs:
my_attrs = ' ' + (' '.join(my_attrs))
else:
my_attrs = ''
else:
my_attrs = '' result.append('<' + tag + my_attrs + '>') def endtag(tag):
if start and tag == start[len(start) - 1]:
# 特殊自闭和标签按照HTML5规则不加反斜杠直接尖括号结尾
if tag not in special_end_tags:
result.append('</' + tag + '>') parser = HTMLParser()
parser.handle_data = result.append
if allow_tags:
parser.handle_starttag = starttag
parser.handle_endtag = endtag
parser.feed(html)
parser.close() for i in range(0, len(result)):
tmp = result[i].rstrip('\n')
tmp = tmp.lstrip('\n')
if tmp:
data.append(tmp) return ''.join(data)

Python 清理HTML标签类似PHP的strip_tags函数功能(二)的更多相关文章

  1. Python 清理HTML标签相似PHP的strip_tags函数功能(二)

    没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到採集上时进行了部分功能的完好, 1. 对自闭和标签处理 2. 以及对标签參数的过滤 fr ...

  2. Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签

    最近在研究 Python ,发现用的还是很不习惯,很多PHP里面很简单的功能在Python 里面都得找半天,而且很多功能都得自己实现. 今天做个采集,需要过滤内容中的标签,搞了一下午,貌似终于搞出来了 ...

  3. JMeter实现登录初始化(类似LR的init函数功能实现)

    1.项目背景 在做项目的性能测试过程中,发现系统的登录功能非常慢,所以,在涉及到登录才能操作的场景,尽量避开登录操作 解决方案: 首选设置“登录并生成签名值”线程组

  4. php 使用htmlspecialchars() 和strip_tags函数过滤HTML标签的区别

    原文地址:http://www.manongjc.com/article/1103.html 先来看一下htmlspecialchars函数和strip_tags函数的使用实例: <?php $ ...

  5. strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签

    定义和用法 strip_tags() 函数剥去 HTML.XML 以及 PHP 的标签. 语法 strip_tags(string,allow) 参数 描述 string 必需.规定要检查的字符串. ...

  6. python的字典有些类似js对象

    python的字典有些类似js对象 dict1 = {} dict1['one']= '1-one' dict1[2] = '2-tow' tinydict = {'name':'tome','cod ...

  7. python用户评论标签匹配的解决方法

    python用户评论标签匹配的解决方法 这篇文章主要为大家详细介绍了python用户评论标签匹配的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 我们观察用户评论发现:属性词往往和情感词伴 ...

  8. php strip_tags() 函数去除 HTML、XML 以及 PHP 的标签。

    strip_tags() 函数剥去 HTML.XML 以及 PHP 的标签.strip_tags(string,allow)参数     描述string     必需.规定要检查的字符串.allow ...

  9. 用python解决打标签时将xml文件的标签名打错

    用python解决打标签时将xml文件的标签名打错 问题描述:再进行达标签时将magnetic_tile的标签名错误的打成了magnetic_title,又不想一张一张的修改 出现问题的xml文件 & ...

随机推荐

  1. CentOS6.8使用源码安装Git

    一.安装git所需的依赖 sudo yum groupinstall "Development Tools" sudo yum install gettext-devel open ...

  2. c语言,string库函数itoa实现:将int转换为char*

    原型:char  *itoa(int   value,char   *string)        功能:将整数value转换成字符串存入string,默认为十进制;      说明:返回指向转换后的 ...

  3. IceMx.Mvc

    IceMx.Mvc 我的js MVC 框架 开篇 开篇 这篇文章是后补的,前端时间想写一些对于js开发的一些理解,就直接写了,后来发现很唐突,所以今天在这里补一个开篇. 我的js Mvc 框架 基于实 ...

  4. jQuery中delegate与on的用法与区别

    在jQuery1.7中 .delegate()已被.on()取代.对于早期版本,它仍然使用事件委托的最有效手段. 在事件绑定和委派,delegate()和on在一般情况下,这两种方法是等效的. .de ...

  5. WPF/Silverlight中的RichTextBox总结

    WPF/Silverlight中的RichTextBox总结   在WPF或者是在Silverlight中有个非常强大的可以编辑的容器控件RichTextBox,有的时间会采取该控件来作为编辑控件.鉴 ...

  6. C# 自动提交到百度ping服务

    C# 自动提交到百度ping服务 今天无意之间看到百度站长中有这个ping服务(孤陋寡闻呀).... 那什么什么是Ping服务 ping是基于XML_RPC标准协议的更新通告服务,用于博客把内容更新快 ...

  7. 基于BrokerPattern服务器框架

    基于BrokerPattern服务器框架 RedRabbit 经典网游服务器架构 该图省略了专门用途的dbserver.guildserver等用于专门功能的server,该架构的优点有: l Log ...

  8. Python学习入门基础教程(learning Python)--6.4 Python的list与函数

    list是python下的一种数据类型,他和其他类型如整形.浮点型.字符串等数据类型一样也可作为函数的型参和实参来使用! 1.list作为参数 list数据类型可以作为函数的参数传递给函数取做相应的处 ...

  9. Hadoop 实现多文件输出

    比如word.txt内容如下: aaa bbb aba abc bba bbd bbbc cc ccd cce 要求按单词的首字母区分单词并分文件输出 代码如下: LineRecordWriter p ...

  10. function返回值Python特殊语法:filter、map、reduce、lambda

    废话就不多说了,开始... Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, sequence):对sequence中的item顺次 ...