Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签
最近在研究 Python ,发现用的还是很不习惯,很多PHP里面很简单的功能在Python 里面都得找半天,而且很多功能都得自己实现。
今天做个采集,需要过滤内容中的标签,搞了一下午,貌似终于搞出来了,测试了下达到了预想的效果,废话不多说贴上代码吧
from html.parser import HTMLParser def strip_tags(html, save=None):
result = []
start = []
data = [] def starttag(tag, attrs):
if tag not in save:
return
start.append(tag)
if attrs:
j = 0
for attr in attrs:
attrs[j] = attr[0] + '="' + attr[1] + '"'
j += 1
attrs = ' ' + (' '.join(attrs))
else:
attrs = ''
result.append('<' + tag + attrs + '>') def endtag(tag):
if start and tag == start[len(start) - 1]:
result.append('</' + tag + '>') parser = HTMLParser()
parser.handle_data = result.append
if save:
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)
使用方法:
result = strip_tags("""发生的杀毒<a target="_blank" title="足球比分直播" href="http://live.500.com/" >足球比分直播</a><a target="_blank" title="竞彩足球" href="http://zx.500.com/jczq/" >竞彩足球</a><a target="_blank" title="篮球竞彩" href="http://zx.500.com/jclq/" >篮球竞彩</a></div>
<img src="dd" alt=">"> <p> 打蛇打七寸,北单7串1。由于<a target="_blank" title="北京单场" href="http://zx.500.com/zqdc/">北京单场</a>SP值计算规则与竞彩不同,4串1及以下投注购买竞彩更划算,而7串1以上的投注很可能交税,反而不划算。根据计算,北京单场4串1到7串1之间的投注最划算。</p>
""", ['p', 'img'])
print(result)
输出结果:
发生的杀毒足球比分直播竞彩足球篮球竞彩 <img src="dd" alt=">"> <p> 打蛇打七寸,北单7串1。由于北京单场SP值计算规则与竞彩不同,4串1及以下投注购买竞彩更划算,而7串1以上的投注很可能交税,反而不划算。根据计算,北京单场4串1到7串1之间的投注最划算。</p>
仅保留 <a> 和 <p> 标签
Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签的更多相关文章
- Python 清理HTML标签类似PHP的strip_tags函数功能(二)
没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到采集上时进行了部分功能的完善, 1. 对自闭和标签处理 2. 以及对标签参数的过滤 fr ...
- Python 清理HTML标签相似PHP的strip_tags函数功能(二)
没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到採集上时进行了部分功能的完好, 1. 对自闭和标签处理 2. 以及对标签參数的过滤 fr ...
- Python 实现类似PHP的strip_tags功能,并能够定义他们自己的一套保留标记
最近的研究 Python ,发现还是很习惯使用,多PHP这是非常easy该功能Python 这不得不找了半天,而且非常灵活不得不实现自己的. 我们今天聚集,需要过滤的内容标签,搞一个PM.外形似终于想 ...
- JMeter实现登录初始化(类似LR的init函数功能实现)
1.项目背景 在做项目的性能测试过程中,发现系统的登录功能非常慢,所以,在涉及到登录才能操作的场景,尽量避开登录操作 解决方案: 首选设置“登录并生成签名值”线程组
- Python如果导出失败,pass函数功能
由于服务器中有一些模块不存在,在文件中导入这些模块时提示错误,导致本地运行正常,服务器测试不通过. 此时,需要捕捉ImportError,当导入的包不存在时,pass掉定义的功能. 示例代码: try ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- 翻译《Writing Idiomatic Python》(二):函数、异常
原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic ...
- Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助 目录 Pychar ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
随机推荐
- C#使用文件监控对象FileSystemWatcher 实现数据同步
在C#使用文件监控对象FileSystemWatcher 实现数据同步 2013-12-12 18:24 by 幕三少, 352 阅读, 3 评论, 收藏, 编辑 最近在项目中有这么个需求,就是得去实 ...
- 【转】几点 iOS 开发技巧
[译] 几点 iOS 开发技巧 原文:iOS Programming Architecture and Design Guidelines 原文来自破船的分享 原文作者是开发界中知晓度相当高的 Mug ...
- vm_write
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types. ...
- Orchard学习计划
http://esshs.cnblogs.com/ http://orchardproject.net/http://www.orchardch.com/Documenthttps://orchard ...
- Attempted to lock an already-locked dir异常解决方法
有时候因网络太慢或中断 就会出现这种锁定状态 Attempted to lock an already-locked dir svn: Working copy 'D:\MyEclipse\mypro ...
- 如何简单而优雅地升级Visual NMP中的PHP版本
需求:自己想测试下不同版本的PHP性能,就想升级下 Visual 这个集成环境中PHP的版本 网上: 升级PHP到5.6.11 1.下载新的nts版的PHP并解压缩到bin\PHP下,保留原文件夹的名 ...
- 从UI开始
虚拟化平台cloudstack(8)——从UI开始 UI ucloudstack采用的是前后端分离的架构,就是说前端可以选择使用web.swing甚至其它的界面,都可以. 我们来看cloudsta ...
- .NET中 类型,对象,线程栈,托管堆在运行时的关系
.NET中 类型,对象,线程栈,托管堆在运行时的关系 The Relationship at Run Time between Types,Objects,A Thread's Stack,and T ...
- Lucene全文检索(一)
全文检索的概念 1.从大量的信息中快速.准确的查找要的信息2.收索的内容是文本信息3.不是根据语句的意思进行处理的(不处理语义)4.全面.快速.准确是衡量全文检索系统的关键指标.5.搜索时英文不区分大 ...
- 统计知识选讲(二)——主成分分析(PCA)的推导和应用
1.数学推导 根据上讲的思想,我们可以用下图来进行数学上的推导. 2.PCA的步骤 1)对原始数据进行标准化处理:对该指标变量进行标准化, 2)计算相关系数矩阵(协方差矩阵) 3)计算相关系数矩阵的特 ...